【问题标题】:Reloading UITableViewCell on select在选择时重新加载 UITableViewCell
【发布时间】:2009-08-10 20:17:04
【问题描述】:

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

现在,在设置出队之前,我可以使用简单的 [self.tableView reloadData] 来完成此操作。对于出队的单元格,这似乎是不行的。重新加载表格视图不会重新绘制单元格以匹配其更改的状态。

我已经尝试过 reloadRowsAtIndex- 虽然这很有效 - 对于用户单击的第一个单元格,它会变得很不稳定:有时单元格会正确重新加载,有时则不会。

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

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

那么,简单地说:如何在选择时可靠地重绘复杂的单元格?

【问题讨论】:

    标签: iphone uitableview


    【解决方案1】:

    尝试为每个单元格分配一个唯一的 ID 以便出队工作,如果您为每个单元格使用唯一的 ID,您的单元格应该会返回其更改后的状态,因此 20 个单元格 = 20 个 ID,希望这会有所帮助

    【讨论】:

      【解决方案2】:

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

      - (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
          //
        }
      }
      

      【讨论】:

      • 谢谢 Daniel 和 dmercredi - 两位。我在我的应用程序的不同位置为您的每个解决方案找到了一个位置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多