UITableView tableView(_:didEndDisplaying:forRowAt :)没有被调用
我想用这个回调来检测何时可以重用单元。根据文档的签名是:UITableView tableView(_:didEndDisplaying:forRowAt :)没有被调用
optional func tableView(_ tableView: UITableView,
didEndDisplaying cell: UITableViewCell,
forRowAt indexPath: IndexPath)
但实际上,这不会与Xcode 7.3和Swift编译。我认为IndexPath应该是NSIndexPath,_必须被删除。所以我得到:
@objc func tableView(tableView: UITableView,
didEndDisplaying cell: UITableViewCell,
forRowAt indexPath: NSIndexPath) {
但是,这从来没有被称为。
出队函数被调用罚款(见下文),并表工作另有:
@objc func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
,这样就意味着我的数据源是工作确定。
我想知道这是否是API的一些不起作用的部分。
(P.S.我不记得为什么@objc在那里,但删除它没有任何区别)。
出队函数被调用罚款(见下文),并表工作 否则:
@objc func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
,这样就意味着我数据源好的工作。
请注意,tableView(_:didEndDisplaying:forRowAt:)是指UITableViewDelegate
,而不是UITableViewDataSource
。我建议检查一下你的班级还有是否符合UITableViewDelegate
。
而且,使用的Xcode 7.3意味着你正在写斯威夫特2.x中,它应该是:
func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
//...
}
在斯威夫特3,它应该是:
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
// ...
}
希望这有助于。
好的 - 就是这样。我在数据源和代表本身之间感到困惑。在视图控制器和正确的签名,它工作正常。并感谢Swift 3的信息。我一直无视它。 – rghome
你在那里的'didEndDisplaying'签名是Swift 3版本,但是基于你声称工作的'cellForRow'签名,你正在使用Swift 2。 – dan