访问当前未显示的UITableViewCell行

时间:2011-12-14 19:29:53

标签: iphone uitableview

有没有办法访问当前不在屏幕上的UITableViewCell?我正在尝试更新当前不在视图中的行。我在Apple的一个示例代码中使用这个可折叠/可扩展的行作为UITableView。我用这个:

for (NSInteger row = 0; row < totalRows; row++) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:section];
    OrderTableViewCell *cell = (OrderTableViewCell *)[_tableView cellForRowAtIndexPath:path];
    cell.CheckmarkButton.selected = YES;
    cell.Symbol.isSelected = YES;
}

我的totalRows是正确的,因为我从TableView获得行数。所以我想我可以使用它,遍历所有行,并设置一些值。但是,如果我检查行的状态,当前屏幕上的值有值,我可以更改它们,但屏幕外的那些是空的,无法设置。有没有办法解决这个问题?感谢。

2 个答案:

答案 0 :(得分:0)

那么为什么你要更新这样的单元格...如果单元格不在视图中,为了节省内存,系统会卸载它,因为它不在视图中,所以不需要更新单元格直接,而不是你应该以这样的方式反映状态:当表视图调用cellForRowIndexPath以加载单元格时,显示所需的外观...你想做你正在做的事情的唯一原因是如果单元格是显示,你需要更新单元格,为用户...即使这样你仍然可以设置你的状态并调用reloadRowsAtIndexPaths而不是直接操作单元格...希望有所帮助

答案 1 :(得分:0)

根据您要更新的内容,您可以更新支持集合中的第i个条目。

例如,您可以拥有一个集合,用于存储与所选CheckmarkButton相对应的bool。在循环中,您可以设置myArray[row] = YES。在cellForRowAtIndexPath,您可以cell.CheckmarkButton.selected = myArray[indexPath.row]

如果要为每个单元格维护多个项目,则上例中的myArray可以包含保存与第i个单元格相关的值的对象实例。