在select上重新加载UITableViewCell

时间:2009-08-10 20:17:04

标签: iphone uitableview

Okidoke。这是我的问题:我设置了一系列复杂的UITableViewCells来显示来自新闻源(哈欠)的故事。我想要发生的是,细胞背景图像和高度在选择时改变(作为标记故事已被阅读的一种方式)。

现在,在设置dequeueing之前,我可以使用一个简单的[self.tableView reloadData]来完成此操作。这似乎与出列的细胞无关;重新加载表视图不会重绘单元格以匹配其更改的状态。

我已经尝试了reloadRowsAtIndex-虽然这很有效 - 但对于用户点击的第一个单元格来说,在此之后它会变得不稳定:有时单元格会正确重新加载,有时不会重新加载。

显然,每个故事都是一个NSMutableDictionary对象。我正在使用NSNumber对象来跟踪故事是否已被阅读。

我会发布代码,如果有人要求我会,但我正在寻找可以在任何UITableViewController中实现的通用解决方案(分享爱情)。

所以,简单地说:如何在选择时可靠地重绘复杂的细胞?

2 个答案:

答案 0 :(得分:0)

尝试给每个单元格一个唯一的ID以便出列工作,如果你为每个单元格使用一个唯一的id,那么你的单元格应该以它们改变的状态返回,所以20个单元格= 20个,希望这有帮助

答案 1 :(得分:0)

假设您有索引路径,您可以访问单元格并直接操作它:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  // handle the selection...

  UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];
  if (nil != cell) {
    //
    // now update the cell to reflect the new state
    //
  }
}