提问人:Daniel Mühlbachler-P. 提问时间:6/26/2011 最后编辑:AbizernDaniel Mühlbachler-P. 更新时间:10/2/2017 访问量:12187
iOS SDK:如何获取表格视图中不可见的单元格?
iOS SDK: How to get a cell in a table view that is not visible?
问:
如何获取当前在表中不可见的 indexPath 的单元格?(单元格超出范围)
获取我的单元格的代码:
NSString *name = [[(ELCTextfieldCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] rightTextField] text];
-cellForRowAtIndexPath...
返回,因为所需 indexPath 处的单元格超出范围。那么,如何获得正确的单元格而不是零呢?nil
答:
唯一保留可见的单元格。如果您需要一个不可见的,则必须调用 .因此,如果 self 是一个类,则:UITableView
tableView:cellForRowAtIndexPath:
UITableView
dataSource
dataSource
UITableViewCell * cell = [self tableView:table cellForRowAtIndexPath:indexPath];
评论
UITableViewCells 可以重复使用/回收,用户不需要创建比可见单元格数量更多的单元格。 您通常不需要访问不可见的单元格。访问数据源并在那里获取/设置相应的数据就足够了。单元格用于显示数据源的某些状态。不是数据源本身:)
编辑:
你说你需要上面一个单元格的一些信息(文本),对吧?如果使用 method,则将重新创建单元格,但可能无法获取文本字段中的文本。原因是什么?因为可能你没有把它保存在其他地方。如果您确实保存了它,请直接访问它,而不是通过单元格。cellForRowAtIndexPath:
这不是它的工作原理。一旦输入或更改信息,您需要立即获取并存储信息。它可能很容易超出范围,你不能保证你的细胞寿命足够长。好吧,从技术上讲,您可以保留它(并且始终为相同的索引路径返回相同的单元格),但我会质疑这种设计。
评论
要填充表格的信息是否来自数组?您不能直接从 0 索引处的数组中提取它,就像您的 cellForRowAtIndexPath 在显示该单元格时可能会检索并填充该单元格一样吗?
继续@Raphael的回答,这是(有效的)swift 3 解决方案:
UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)
评论