我试图在表格视图中一次只选择两行,但似乎我无法获得好结果!
这个想法是你选择一行,这会将一个对象发送到核心数据,然后当你选择第二行向核心数据发送不同的东西时。但是,如果选择两行以上,则会显示一个警告视图,表明您只能选择两行。
我试过这个:
NSArray *indexPathArray = [[NSArray alloc]init];
indexPathArray = [self.mainTableView indexPathsForSelectedRows];
if ( indexPathArray.count == 1) {
NSLog(@"%@",@"we have 1 cell selected");
}
if ( indexPathArray.count == 2) {
NSLog(@"%@",@"We have 2 cells selected!");
}
if (indexPathArray.count > 2) {
NSLog(@"%@",@"ERROR ERROR!!!");
}
我尝试了很多其他google和堆栈溢出建议,但没有结束!
那我怎么能实现这个目标呢?
这是我有代码的方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath(NSIndexPath*)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self setSelection:indexPath];
_profile = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSInteger rowNumber = 0;
for (NSInteger i = 0; i < indexPath.section; i++) {
rowNumber += [self tableView:tableView numberOfRowsInSection:i];
}
rowNumber += indexPath.row;
NSLog(@"%ld",(long)rowNumber);
NSArray *indexPathArray = [[NSArray alloc]init];
indexPathArray = [self.mainTableView indexPathsForSelectedRows];
if ( indexPathArray.count == 1) {
NSLog(@"%@",@"we have 1 cell selected");
}
if ( indexPathArray.count == 2) {
NSLog(@"%@",@"We have 2 cells selected!");
}
if (indexPathArray.count > 2) {
NSLog(@"%@",@"ERROR ERROR!!!");
}
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; }
答案 0 :(得分:1)
删除此行:
[tableView deselectRowAtIndexPath:indexPath animated:YES];
来自didSelectRowAtIndexPath:
方法。
答案 1 :(得分:0)
在方法
中注释/删除代码中的以下行
- (void)tableView:(UITableView )tableView didSelectRowAtIndexPath(NSIndexPath )indexPath
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
并检查。你的逻辑部分应该可以正常工作。
说明:TableView方法 indexPathsForSelectedRows 将返回所选行数。您正在使用以下代码行取消选择所选行:
[tableView deselectRowAtIndexPath:indexPath animated:YES];
仅注释/删除这一行代码将使indexPathArray计数为1,因为您仍然使用以下方法重新加载方法末尾的行:
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
上面的代码也会在重新加载时重置要取消选择的行。所以你需要评论或删除它。