UITableView tableView(_:didEndDisplaying:forRowAt :)未被调用

时间:2017-01-23 21:32:10

标签: ios swift uitableview

我正在尝试使用此回调来检测何时可以重用单元格。根据文件,签名是:

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在那里,但删除它并没有任何区别。)

1 个答案:

答案 0 :(得分:3)

  

出列函数称为精细(下图),表格有效   否则:

@objc func tableView(tableView: UITableView,
    cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
     

这意味着我的数据源正常运行。

请注意,tableView(_:didEndDisplaying:forRowAt:)表示UITableViewDelegate,而不是UITableViewDataSource。我建议检查您的班级 是否符合UITableViewDelegate

另外,使用Xcode 7.3意味着你正在编写Swift 2.x,它应该是:

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    //...
}

在Swift 3中,它应该是:

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    // ...
}

希望这会有所帮助。