刷新单元格的UITableView队列

时间:2011-01-07 10:11:18

标签: iphone

我想知道是否有人可以回复我,如果调用UITableView reloadData时UITableView队列被刷新。我正在尝试这样做,这对我没有帮助。有什么建议吗?

2 个答案:

答案 0 :(得分:8)

如果查看UITableView的头文件,可以看到有一个名为“_reusableTableCells”的私有NSMutableDictionary(iVar)。这是一个字典重用标识符作为键的字典,以及带有当前屏幕外值为单元格的数组。

如果你想以可能随实现方式改变的方式手动刷新排队的单元格,你可以用丑陋的方式这样做,如下所示:

NSMutableDictionary *cells = (NSMutableDictionary*)[self.tableView valueForKey:@"_reusableTableCells"];
[cells removeAllObjects];

希望这会有所帮助......

答案 1 :(得分:4)

加载表后,将重复使用这些单元格。重新加载表不会刷新队列。 reloadData来电- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

在此方法中,存在if(cell==nil)条件,以便一旦将单元格加载到内存中,就不会刷新单元格,因此可以重复使用它们。

要解决此问题,请在应用正确信息之前重置您的单元格。

cell.detailTextLabel.text = @"";
cell.accessoryType = UITableViewCellAccessoryNone;

或者如果您使用accessoryView

cell.accessoryView = nil;

另请参阅此示例。 UITableView not updating correctly when scrolling.