1

我有一个UITableView设置AllowsMultipleSelectionDuringEditing为YES。选择多行是我的应用程序的重要组成部分,而且效果很好。

问题是,在我的一个上,我tableView's不希望用户在编辑模式下能够选择前 2 行,所以我实现了以下内容:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

    if (indexPath.row == 0 || indexPath.row ==1) {
        return NO;
    }//end

    return YES;

}//end

这按我的想法工作,并且不显示红色复选框图形或重新排序行的选项。但是,我仍然可以选择那些不可编辑的行,并调用该indexPathsForSelectedRows方法并返回indexPaths这些行的。

如何防止用户在编辑模式下完全无法选择这些行,并防止在调用时触摸这些行indexPathsForSelectedRows?为什么不canEditRowAtIndexPath:为我这样做?

4

2 回答 2

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

于 2012-12-04T01:17:35.150 回答
1

您是否尝试过以下代码?

tableView.allowsSelectionDuringEditing = NO;

或者

tableView.allowsMultipleSelectionDuringEditing = NO;
于 2012-12-04T01:24:02.123 回答