检查iPhone UITableView中的所有项目

检查iPhone UITableView中的所有项目,iphone,uitableview,Iphone,Uitableview,我有一个UITableView,其中每个单元格在单击时要么获得/丢失一个复选框,要么转到另一个表视图。对于每个表,我想添加一个check all按钮,用于检查该表中的每个单元格及其内部的所有单元格。如何允许一个UITableViewCell在其TableView中切换每个UITableViewCell的复选框 编辑:删除索引路径中的最后一个索引,并将其替换为新的行号,我可以遍历整个表并将其选中,如下所示: for(int i = 0; i < [tableView numberOfRows

我有一个UITableView,其中每个单元格在单击时要么获得/丢失一个复选框,要么转到另一个表视图。对于每个表,我想添加一个check all按钮,用于检查该表中的每个单元格及其内部的所有单元格。如何允许一个UITableViewCell在其TableView中切换每个UITableViewCell的复选框

编辑:删除索引路径中的最后一个索引,并将其替换为新的行号,我可以遍历整个表并将其选中,如下所示:

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

奇怪的是,它大约每十个细胞就跳过一次——甚至不一致。对于一个年份列表,有时不勾选2003年和1993年,有时不勾选2003年和1991年,依此类推。它总是大约每十个单元格一次,但我找不到模式。

当您单击单元格时,将调用DIDSelectRowatineXpath,此时您所要做的就是使用tableView CellForRowatineXpath:indexPath方法,以便逐个返回所有单元格并将其附件类型设置为选中标记…希望这有帮助

编辑:另一种方法是,如果您可能有某种数组(不看代码很难告诉您具体做什么),但如果您有一些数组,其中包含的值表示哪些单元格需要有复选标记,那么您可以在cellForRowAtIndexPath中使用来指定复选标记附件,因此当您的单元格被选中时,您可以将数组中的所有值设置为您需要的值,只需调用UITableViews reloadData…希望如此:),这里有一小部分代码可以尝试让它更清晰 假设您有1个部分和x行数

       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中看到,您可以翻转数组中的数字并调用tableView上的reloadData…这种方法也会起作用

谢谢,但是如何找到每个单元格的索引路径呢。我尝试使用:[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:I第0节];从0到最后一个表行,但当我返回到上一个表时,这会导致应用程序崩溃。您需要编辑的单元格的索引路径您可能应该知道,或者您可以将它们存储在某个位置…我不知道您的应用程序为什么会崩溃您可能做错了什么,如果您发布一些代码,我可以查看它并告诉您是否看到任何可能导致崩溃的东西