每当我创建一个新单元格时,就会出现奇怪的魔法。如果我稍后退出视图控制器(数据全部保存),然后再次返回视图控制器(重新加载数据等),一切都很好(但如果我留在视图控制器中,它就会搞砸)
现在让我来描述一下这个奇怪的魔法:
- 我有一个自定义 UITableViewCell
- 当 indexPath 为偶数时,其中存在一个蓝色圆圈
- 当 indexPath 为奇数时,其中存在一个绿色矩形
但是,当创建一个新单元格时,其中既有绿色矩形又有蓝色圆圈,这怎么可能呢?
- (void)tableView:(UITableView *)tableView willDisplayCell:(CustomCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (cell.blueCircle) cell.blueCircle = nil;
if (cell.greenRect) cell.greenRect = nil;
if (indexPath.row % 2 == 0){
NSLog(@"Even indexPath: %@", indexPath);
//some of the code not shown here creates a blue circle
[cell addSubview:cell.blueCircle];
}
else {
NSLog(@"Odd indexPath: %@", indexPath);
//some of the code not shown here creates a green rectangle
[cell addSubview:cell.greenRect];
}
}
请注意,我只得到一个 NSLog,要么是奇数要么是偶数,那么为什么我会得到两个形状而不是一个呢?
我有一种感觉,在调用此消息之前,其中一个形状以某种方式(不确定这是如何工作的)从前一个单元格转移到新单元格,但我确实有懒惰的“nilization”来解决这个问题。
您对此有何看法?