我有一个UITableView
,AllowsMultipleSelectionDuringEditing
设置为YES。选择多行是我应用的重要组成部分,效果很好。
问题是,我的一个tableView's
我不希望用户在编辑模式下能够选择前两行,所以我实现了以下内容:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0 || indexPath.row ==1) {
return NO;
}//end
return YES;
}//end
这符合我的想法,并没有显示红色复选框图形或重新排序行的选项。但是,我仍然可以选择那些不可编辑的行,并调用indexPathsForSelectedRows
方法并返回这些行的indexPaths
。
如何在编辑模式下阻止用户完全选择这些行,并防止在调用indexPathsForSelectedRows
时返回那些行?为什么canEditRowAtIndexPath:
没有为我做这件事?
答案 0 :(得分:1)
执行此操作的一种方法是实施– tableView:willSelectRowAtIndexPath:
方法,然后检查tableView.editing == YES
是否会返回nil
前两个单元格。
类似的东西,
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView.editing == YES && indexPath.row < 2 )
return nil;
return indexPath;
}
您还可以在selectionStyle
方法的编辑模式下将这两个单元格的UITableViewCellSelectionStyleNone
设置为cellForRowAtIndexPath
。
答案 1 :(得分:1)
您是否尝试过以下代码?
tableView.allowsSelectionDuringEditing = NO;
或
tableView.allowsMultipleSelectionDuringEditing = NO;