2010-07-13 76 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

相关问题