2012-02-05 79 views
1

我在我的tableview中有一個奇怪的問題。我想選擇行並只想顯示覆選標記。我有一個包含多個部分的tableview。選擇行並顯示覆選標記是好的,但在tableview中有10行,那一行也會被選中?當再次選擇多行10行時,會出現多個選項。點擊一行會選擇多行

我使用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath { 
    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO]; 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:newIndexPath]; 
    if (cell.accessoryType == UITableViewCellAccessoryNone) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 

     // Reflect selection in data model 
    } else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     // Reflect deselection in data model 
    } 
} 

回答

0

這不是被選中另一行,這就是被重複使用相同的檢查標記的細胞。在tableView:didSelectRowAtIndexPath:您正在使用單元格來存儲狀態。在tableView:cellForRowAtIndexPath:中,您沒有解決行是否應該有複選標記。

你可能會想要做的是有一個ivarNSMutableSetdidSelectRow..添加或從該組刪除indexPath,這取決於它的檢查狀態。然後在cellForRow..中根據indexPath的成員資格設置accessoryType屬性。

編輯對不起,我沒有看到你保存狀態到數據模型的註釋。在這種情況下,您只需在cellForRow...中添加支票。由於這是一個常見問題,我會留下最初的答案。