1

YES に設定されてUITableViewいる があります。AllowsMultipleSelectionDuringEditing複数の行を選択することは、私のアプリの大きな部分であり、うまく機能します。

問題は、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

これを行う1つの方法は、メソッドを実装し、最初の2つのセルに戻る– tableView:willSelectRowAtIndexPath:かどうかを確認することです。tableView.editing == YESnil

何かのようなもの、

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (tableView.editing == YES && indexPath.row < 2 ) 
       return nil;

    return indexPath;
}

メソッドの編集モードselectionStyleのように、これら2つのセルのを設定することもできます。UITableViewCellSelectionStyleNonecellForRowAtIndexPath

于 2012-12-04T01:17:35.150 に答える
1

次のコードを試しましたか?

tableView.allowsSelectionDuringEditing = NO;

また

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