编辑模式单元格中的UITableView即使在使用时仍可选择

时间:2012-12-04 01:10:07

标签: objective-c ios uitableview

我有一个UITableViewAllowsMultipleSelectionDuringEditing设置为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:没有为我做这件事?

2 个答案:

答案 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;