7 uitableview reuseidentifier ios
有没有人有关于如何清除缓存的建议UITableViewCell
?
我想用reuseIdentifier缓存这些单元格.但是,有时我需要删除或修改某些表行.我希望reloadData
在行更改后调用.
现在,dequeueReusableCellWithIdentifier
始终返回之前的缓存(过时)条目.如何指示缓存是陈旧的并且需要清除?
我不确定你为什么要首先清除细胞.每次出列单元格时,都需要重新设置需要显示的数据.缓存只会阻止您每次都必须设置任何不变的属性.但是必须设置正在显示的实际数据,即使之前缓存了单元格.
请注意,对于所有相同类型的单元格,您的重用标识符应该是相同的.如果您正在做一些愚蠢的事情,比如根据相关行计算标识符,那么您做错了.
你的代码看起来应该是这样的
- (UITableViewCell *)tableView:(UITableView *)view cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *identifier = @"CellIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (!cell) { // no cached cell, create a new one here cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; // set any properties that all such cells should share, such as accessory, or text color } // set data for this particular cell cell.textLabel.text = @"foo"; return cell; }
在该示例中,请注意我每次都是如何始终为单元设置数据,并且所有单元共享相同的标识符.如果您遵循这种模式,您根本没有理由尝试"清除"您的单元格,因为任何旧数据都会被覆盖.如果您有多种类型的单元格,在这种情况下您可能希望使用多个标识符,但每个单元格类型仍然是1个标识符.
应使用该消息清除以前使用单元时产生的旧数据prepareForReuse
。当单元出队时,此消息会在从 中返回之前发送到该单元dequeueReusableCellWithIdentifier:
。