每當我創建一個新單元格時,都會發生奇怪的魔法。如果我稍後退出視圖控制器(數據全部保存),並再次返回視圖控制器(重新載入數據等),一切都可以(但是如果我留在視圖控制器中,它會搞砸了)UITableViewCell willDisplayCell方法難題
現在讓我來描述這個奇怪的魔法:
- 我有一個自定義的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」與此戰鬥。
你對此有何看法?
這真棒,我有一種感覺,就是這樣的感覺。我只是不明白究竟是什麼。這個解釋對於像我這樣的第一次iOS的人來說確實很有幫助。 :)但是,rdelmar的解決方案比你的更好。所以我不確定,我應該給誰巧克力曲奇餅乾(checkmark)? @Andrew – GangstaGraham
我決定選擇你作爲獲勝者,但我給了你們倆的讚揚 – GangstaGraham