因爲UITableView
的典型重用UITableViewCell
的情況下的,你必須確保你的'-tableView:cellForRowAtIndexPath:
方法正確設置單元格的所有屬性。其他陳舊的數據可以持續存在。我猜這可能是你的問題,缺乏完整的代碼。
所以,這樣的事情:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellIdentifier = @"TheCellIdentifier";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
ShoppingObject* shopping = [self.myShoppingList objectAtIndex:indexPath.row];
UIImageView* accessoryView = nil;
if (shopping.isDone) {
accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tick_btn"]];
}
cell.accessoryView = accessoryView;
return cell;
}
它獲得小區,無論是從重用高速緩存或創建一個新的。然後,它會檢查數據模型的狀態,以查看是否購物已完成或未在該行中呈現的對象,以及購物完成後是否爲您提供圖像。請注意,購物沒有完成,沒有創建accessoryView,因此無論ShoppingObject的狀態如何表示在該表格行中,該單元的accessoryView都將被正確設置。
那麼,我可能會在你的-tableView:didSelectRowAtIndexPath:
中做的事情就是在表格上簡單地-reloadData
,以確保一切正確更新。
PLS顯示我們的代碼 – manujmv
' - (空)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath {cell = [tableView cellForRowAtIndexPath:indexPath]; 如果(cell.accessoryView ==無) { cell.accessoryView = [[ALLOC的UIImageView] initWithImage:[UIImage的imageNamed:@ 「tick_btn」]]; } else { cell.accessoryView = nil; } }' – JgdGuy