我在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行出现。
有没有人对这个问题有所了解?
答案 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;
}
希望这可以帮助你..