选择一行是检查另一行的标记

时间:2014-06-17 11:12:06

标签: ios uitableview

我在iOS中的表视图中遇到了一个奇怪的问题。在表格中,当我点击一行时,我想要显示一个复选标记,它在下面的代码中运行得非常好:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){
        [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
    }else{
        [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
    }
}

现在,我的桌子有11行。当我点击第1行时,第1行会显示复选标记(这很好),但第10行也会显示。当我点击第2行时,第2行(这是好的)和第11行出现。

有没有人对这个问题有所了解?

2 个答案:

答案 0 :(得分:1)

这样做......

self.tableView.allowsMultipleSelection = YES;

然后当你需要获得所有选定的行...

NSArray *selectedIndexPaths = [self.tableView indexPathsForSelectedRows];

此数组将包含所有带有复选标记的行。

不需要自己在代码中做任何事情。

答案 1 :(得分:0)

对于你想要做的同样的事情,我是按照以下方式实现的 -

在AppDelegate或本地文件中声明NSIndexPath变量。

if (Appdelegate.selectedIndexPath == (id)[NSNull null]) {
     NSLog(@"null");

     Appdelegate.selectedWebsiteIndex=indexPath;
     UITableViewCell *cell = [aTableView cellForRowAtIndexPath:indexPath];
     cell.accessoryType = UITableViewCellAccessoryCheckmark;

 }else{

     UITableViewCell *cell1 = [aTableView cellForRowAtIndexPath: Appdelegate.selectedIndexPath];
     cell1.accessoryType = UITableViewCellAccessoryNone;

     Appdelegate.selectedIndexPath =indexPath;
     UITableViewCell *cell = [aTableView cellForRowAtIndexPath:indexPath];
     cell.accessoryType = UITableViewCellAccessoryCheckmark;

 }

希望这可以帮助你..