2012-03-13 46 views
0

我有一個tableview,當用戶選擇單元格時,它會將accessorytype設置爲UITableViewCellAccessoryCheckmark如何取消選中ios中tableview上的所有單元格

現在,當我導航到前一個屏幕,然後前進到這個tableview,我的細胞仍然被檢查。

有沒有一種方法可以取消全部選中?我想基本上將它們全部設置爲UITableViewCellAccessoryNone

我嘗試使用reloadData,當視圖顯示,但似乎並不觸發cellForRowAtIndexPath(這是在我的邏輯是設置細胞的accessorytype

+0

您可以發佈您的cellForRowAtIndexPath代碼? – user523234 2012-03-13 05:22:13

+0

發表了一段代碼 – hchouhan02 2012-03-13 06:04:45

+0

如果你想強制完成重新加載,請使用' - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)動畫。但這不是正確的方法。你應該在你的MODEL中進行修改,然後更新你的VIEW。如果你的'MODEL'和你的'cellForRowAtIndexPath'是正確的 - 那麼簡單的'reloadData'就可以實現。 – 2012-03-13 09:22:43

回答

1

應設置accessorytype在tableView:willDisplayCell:forRowAtIndexPath:,而不是cellForRowAtIndexPath,使其被更新時,它會顯示(而不是隻創建時)。

0

有一個名爲的tableview方法clearsselectiononviewwillappear你可能會意外覆蓋。默認行爲應該是YES。看看蘋果的doc 上UITab

+0

我認爲這是清除選擇,這意味着當你選擇一個單元格時,它會突出顯示。我認爲它可以清除突出顯示的行。因爲我沒有覆蓋這一切 – pdiddy 2012-03-14 12:27:24

2

我認爲這可能會做你想做的。我假設你要取消所有的細胞作爲迴應的tableView的一部分:didSelectRowAtIndexPath方法:但你可以在任何地方插入此代碼:

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Uncheck any visible, checked cells. 
    NSArray *visibleCells = [tableView visibleCells]; 
    for (UITableViewCell *cell in visibleCells) { 
     [cell setAccessoryType:UITableViewCellAccessoryNone]; 
    } 

    // Now do whatever else you want in response to a row being selected. 
} 
相關問題