gpt4 book ai didi

ios - 无法将类型 'UITableViewWrapperView' 的值转换为 iOS 11 以下的 'UITableView'

转载 作者:行者123 更新时间:2023-11-28 07:37:42 25 4
gpt4 key购买 nike

我有一个用于 UITableView 的自定义 UITableCell,上面有一个按钮。

我使用以下代码检测使用此代码的单元格的 indexPath 并传递索引,以便我可以在单元格的 View Controller 上采取适当的操作。

这在 iOS 11 及更高版本上工作正常,但在它以下不起作用。请帮助我理解为什么会发生这种情况以及如何避免此错误。我被这个困住了。非常感谢您的帮助。谢谢。

class PostCellView: UITableViewCell {
weak var delegate: PostCellViewDelegate?

// utilities
@IBAction func cellAction(_ sender: UIButton) {
let tableView : UITableView = self.superview as! UITableView
let indexPath: IndexPath = tableView.indexPathForRow(at: self.center)!

delegate?.cellTaskerAction(row : indexPath.row)
}
}

我不能在 cellForRow 中设置并在自定义单元格的 IBAction 中调用的自定义单元格中使用回调闭包(正如 @vadian 在 Issue Detecting Button cellForRowAt 中所建议的那样)。我有单元格被删除,因为 cellForRow 不是每次都刷新,一些单元格仍然保存最后一个索引,这会导致错误。请帮我找到解决方案。

最佳答案

主要问题是您错误地假设单元格的父 View 是 TableView 。永远不要对别人提供的 View 类的私有(private) subview 结构做任何假设。

第二个问题是您在单元类中放置了太多逻辑。您的单元格的委托(delegate)应该简单地将其自身(单元格)作为唯一参数传递给委托(delegate)方法。让委托(delegate)的实现者获得它需要的关于单元的任何信息。如果委托(delegate)人想知道单元格的索引路径,那么委托(delegate)人可以询问 TableView 。此逻辑不属于单元格。

一个单元格永远不需要知道它自己的索引路径,也不需要知道它在哪个 TableView 中。一个单元格应该只关心它自己的 View ,而不关心其他。

更新您的协议(protocol)方法以将单元格作为参数。

更新您的单元格的按钮处理程序以简单地将其自身作为参数传递给委托(delegate)方法。

更新 View Controller 中的委托(delegate)方法以将单元格作为参数并根据该单元格获取所需的任何内容。

这样做会使您的单元类的实现更加简单,并将逻辑放在它所属的位置 - 在 View Controller 中。

关于ios - 无法将类型 'UITableViewWrapperView' 的值转换为 iOS 11 以下的 'UITableView',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com