2010-07-13 82 views
0

我有一個UITableView,其中每個單元格獲取/丟失複選框或單擊時轉到另一個表格視圖。對於每個表格,我想添加一個檢查所有按鈕,檢查該表格中的每個單元格以及其中的所有單元格。我如何讓一個UITableViewCell切換其TableView中每個人的複選框?檢查iPhone中的所有項目UITableView

編輯:刪除索引路徑的最後一個索引,並通過新的行號替換它,我可以去通過整個表,並檢查它,就像這樣:

for(int i = 0; i < [tableView numberOfRowsInSection:0]; i++){ 
       UITableViewCell *newCell = [tableView cellForRowAtIndexPath:[[indexPath indexPathByRemovingLastIndex] 
                      indexPathByAddingIndex: i]]; 
       newCell.accessoryType = UITableViewCellAccessoryNone; 
      } 

奇怪,它跳過了每十個單元格左右 - 甚至不一致。對於多年的列表,有時它不會檢查2003年和1993年,有時2003年和1991年等等。它總是在每十個單元左右,但我找不到一個模式。

回答

1

當您單擊單元格didSelectRowAtIndexPath將被調用,在那一點上,你所要做的就是使用tableView cellForRowAtIndexPath:indexPath方法,以便逐一取回所有單元格,並將它們的附件類型設置爲複選標記... hope這有助於

編輯:另一種方法是,如果你有可能某種數組(很難告訴你做什麼,而不看你的代碼),但如果你有一些數組保存值哪些單元格需要在它們上面有複選標記,那麼你可以在cellForRowAtIndexPath中使用它來分配複選標記附件,所以當你選擇了單元格時,你可以將數組中的所有值設置爲你所需要的值,然後調用UITableViews reloadData。 ..hope使得sence :),繼承人一小段snipet代碼試圖使它更加清晰 讓我們假設你有行

 NSMutableArray shouldHaveCheckmark; //this array will be of size x 
//(one for each row) and hold NSNUmbers 0 means not checked 1 means checked you initialize 
//this somewhere (viewDidLoad maybe) and should be declared in your .h file 
    //this is cellForRowAtIndex path 
    -(UITableViewCell)cellForRowAtIndexPath:(NSIndexPath*)path 
    { 
     UITableViewCell *cell=... 
     if([[shouldHaveCheckmark objectAtIndex:path.row] boolValue]) 
      //assign checkmark accesory 
    //other code 
    return cell; 
    } 

所以,你可以看到didSelectRowAtIndexPath方法你可以翻轉的數字數組中,並調用reloadData上的tableView的1倍和X量......這方法也可以工作

+0

謝謝,但是如何找到每個單元格的索引路徑。我嘗試使用: [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; 從0到最後一個表格行,但是當我回到上一個表格時導致應用程序崩潰。 – ike 2010-07-13 19:13:29

+0

您需要編輯的單元格的索引路徑應該可能已知,或者您可以將它們存儲在某處...我不知道爲什麼您的應用程序崩潰了,您可能會做一些錯誤的操作,如果您發佈了一些代碼,我可以查看它並告訴你,如果我看到任何可能導致崩潰 – Daniel 2010-07-13 20:46:56

+0

另一種方式來做到這一點是我的編輯menitoned – Daniel 2010-07-13 20:47:37