检查UITableView中是否显示特定的UITableViewCell

ozk*_*ing 25 iphone xcode objective-c uitableview ios

我有UITableView一些UITableViewCells我通过Interface Builder手动创建的.我分配每一个单元的outlet,和IM将它们连接到UITableViewCellForRowAtIndexPath方法.在这种方法中,我使用的switch(case)方法使特定的单元格出现在UITableView,取决于具体情况.

现在,我想找到一个特定的单元格并检查它是否存在于其中UITableView.我使用方法:UITableView.visibleCells获取表视图中的单元格数组.我的问题是 - 如何检查数组中是否存在特定的单元格?我能以某种方式使用我分配给它的插座吗? - (最好的解决方案),或者,我可以使用标识符吗?

谢谢 :)

Stu*_* mc 77

请注意,您也可以使用indexPathsForVisibleRows这种方式:

    NSUInteger index = [_people indexOfObject:person];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0];
    if ([self.tableView.indexPathsForVisibleRows containsObject:indexPath]) {
      [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                            withRowAnimation:UITableViewRowAnimationFade];
    }
Run Code Online (Sandbox Code Playgroud)

如果你有indexPath(并且不需要实际的Cell),它可能会更便宜.

PS:_peopleNSArray作为我在这种情况下后端.

  • 在大多数情况下,此解决方案优于公认的解决方案. (3认同)

jrt*_*ton 17

if ([tableView.visibleCells containsObject:myCell])
{
    // Do your thing
}
Run Code Online (Sandbox Code Playgroud)

这假设你有一个单独的实例变量包含你感兴趣的单元格,我想你是从问题中做到的,但不清楚.


Sor*_*rig 11

您可以使用UITableView方法:

[tableView indexPathForCell:aCell];
Run Code Online (Sandbox Code Playgroud)

如果tableView中不存在该单元格,则返回nil.否则,您将获得单元格的NSIndexPath.

  • 重用单元格时,这不起作用 (4认同)