2013-03-21 169 views
1

我有一個方法selectAll來選擇我的UITableView中的所有單元格。此方法檢查複選框(UIButton)。它只適用於"visible"單元,但不適用於"invisible"單元!在iOS中選擇UITableView中的所有單元即使不可見單元格

- (IBAction)selectAll:(id)sender { 

    for (NSInteger s = 0; s < self.tableView.numberOfSections; s++) { 
     for (NSInteger r = 0; r < [self.tableView numberOfRowsInSection:s]; r++) { 

      CustomCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:r inSection:s]]; 

      if(!cell.checkbox.selected){ 
       cell.checkbox.selected = !cell.checkbox.selected; 
       cell.account.checked = cell.checkbox.selected; 
      } 

     } 
    } 
} 
+0

你不應該對不在屏幕上的單元格做任何事情。 **更改模型**,一旦它們滾動到屏幕上,這些單元格將顯示更改。 – 2013-03-21 09:15:33

回答

4

從文檔:

cellForRowAtIndexPath: 

返回值:

表示表或nil if the cell is not visible或indexPath超出範圍的細胞的對象。

您可以創建一個包含布爾列表的數組,用於選中或取消選中,並在單元格可見時進行查詢。

+0

謝謝你的幫助! ;) – Lapinou 2013-03-21 09:43:42

+0

不客氣! :) – 2013-03-21 10:14:29

0

您需要檢查或取消選中「cellForRowAtIndexPath」的方法你「selected」或「checked」你的細胞的狀態:

這裏我的方法。基礎數據源是另一個可以跟蹤應該是什麼樣的數據狀態的單元。

通過這個函數簡單修改UITableViewCells只會更新表格視圖中當前可見的單元格。

0

在cellForRowAtIndexPath中檢查它。只需檢查if條件是否合適indexPath.section

if (indexPath.section== add the section){ 
cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
else{ 
cell.accessoryType = UITableViewCellAccessoryNone; 
} 
相關問題