iPhone自定义UITableViewCell重新加载

时间:2010-03-04 14:14:23

标签: iphone memory-management

目前我正在努力解决这个问题: 我有一个UITableViewController,它显示一个带有不同自定义单元格的tableView。

一个自定义单元格显示一个数字(通过标签)。如果单击此单元格,navigationController将移动到UIPicker,用户可以在其中选择要显示的数字。 如果用户向后移动,则单元格应显示更新的值。

问题: 我设法通过调用

来重新加载单元格
- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [self.tableView reloadData];
}
在UITableViewController中

如果我没有为单元格使用dequeueReusableCellWithIdentifier(表格不会显示更新),这只适用。 但在这种情况下,内存使用量会增长并增长...... 此外,该程序在大约15次移动后崩溃到pickerView并返回 - 我认为因为应该重新加载的单元格已经被释放。

每次出现视图时,如何更新可重复使用的自定义单元格? 什么是最好的解决方案?

我认为不应该使用保留细胞?

2 个答案:

答案 0 :(得分:1)

一般方法是,如果只更改了一个单元格,则避免重新加载整个表。

在这种情况下,只需获取要“刷新”的UITableViewCell的引用,并从其上的主线程调用[self setNeedsDisplay]以触发其刷新(将调用它上的drawRect触发它的绘图)。

答案 1 :(得分:0)

您是否在NIB中设置了相应的ID?它必须与您在调用dequeueReusableCellWithIdentifier:

时使用的相同

请参阅第3步here