如何获取当前在表中不可见的indexPath的单元格? (单元格超出范围)
获取我的手机的代码:
NSString *name = [[(ELCTextfieldCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] rightTextField] text];
-cellForRowAtIndexPath...
返回nil
,因为所需indexPath处的单元格超出范围。那么我如何得到正确的细胞而不是零?
答案 0 :(得分:17)
UITableView
仅保留可见细胞。如果您需要一个看不到的,则必须拨打tableView:cellForRowAtIndexPath:
UITableView
的{{1}}。所以,如果self是一个dataSource
的类:
dataSource
答案 1 :(得分:4)
这不是它的工作原理。您需要在输入或更改信息后立即获取并存储信息。它可能很容易超出范围,您不能保证您的细胞寿命足够长。好吧,从技术上讲,你可以抓住它(并且总是为相同的索引路径返回相同的单元格),但我会质疑那个设计。
答案 2 :(得分:2)
UITableViewCells可以重复使用/回收,用户不需要创建比可见数量更多的单元格。 您通常不需要访问不可见的单元格。您应该可以访问数据源并在那里获取/设置相应的数据。单元格用于显示数据源的某些状态。不是数据源本身:))
修改强>
你说你需要上面一个单元格中的一些信息(文本),对吧?如果使用cellForRowAtIndexPath:
方法,将重新创建单元格,但可能无法获取文本字段中的文本。原因?因为可能你没有把它保存在其他地方。如果你确实保存了它,那么直接访问它而不是通过单元格。
答案 3 :(得分:1)
继续@ Raphael的回答,这是(工作) swift 3 解决方案:
UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)
答案 4 :(得分:0)
填充表格的信息是否来自阵列?你能否在0索引处直接从数组中取出它,就像你的cellForRowAtIndexPath可能会在显示时检索并填充那个单元格一样?