目前我正在努力解决这个问题: 我有一个UITableViewController,它显示一个带有不同自定义单元格的tableView。
一个自定义单元格显示一个数字(通过标签)。如果单击此单元格,navigationController将移动到UIPicker,用户可以在其中选择要显示的数字。 如果用户向后移动,则单元格应显示更新的值。
问题: 我设法通过调用
来重新加载单元格- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.tableView reloadData];
}
在UITableViewController中。
如果我没有为单元格使用dequeueReusableCellWithIdentifier(表格不会显示更新),这只适用。 但在这种情况下,内存使用量会增长并增长...... 此外,该程序在大约15次移动后崩溃到pickerView并返回 - 我认为因为应该重新加载的单元格已经被释放。
每次出现视图时,如何更新可重复使用的自定义单元格? 什么是最好的解决方案?
我认为不应该使用保留细胞?
答案 0 :(得分:1)
一般方法是,如果只更改了一个单元格,则避免重新加载整个表。
在这种情况下,只需获取要“刷新”的UITableViewCell的引用,并从其上的主线程调用[self setNeedsDisplay]
以触发其刷新(将调用它上的drawRect
触发它的绘图)。
答案 1 :(得分:0)
您是否在NIB中设置了相应的ID?它必须与您在调用dequeueReusableCellWithIdentifier:
请参阅第3步here