10

ここでちょっと気が狂いそうです。いくつかのスタンドアロンUITextFieldの 、いくつかUITextFieldsのの詳細ビュー、およびメモを保持するために使用されるUITAbleViewCell1 つのシングル(存在する場合) があります。UITableViewCell編集モードのときにのみ、このセルを選択できるようにします。編集モードでないときは、選択したくありません。(編集モードで) セルを選択すると、新しいビューを開始するメソッドが起動されます。これは非常に簡単ですが、どこかが欠けています。

私が使用している現在の選択方法は次のとおりです。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.editing) {
        NSLog(@"Returning nil, not in edit mode");
        return nil;
    }
    NSLog(@"Cell will be selected, not in edit mode");
    if (indexPath.section == 0) {
        NSLog(@"Comments cell will be selected");
        return indexPath;
    }
    return nil;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.editing) {
        NSLog(@"Not in edit mode. Should not have made it this far.");
        return;
    }

    if (indexPath.section == 0)
        [self pushCommentsView];
    else
        return;
}

私の問題は実際には 2 倍です。

1) 編集モードでなくても、nil(メッセージのためにNSLog) 戻ることがわかっている場合でも、行を選択できます (青く点滅します)。メソッドの私の理解からwillSelectRowAtIndexPath、これは起こるべきではありません。多分私はこれについて間違っていますか?

2) 編集モードに入ると、何も選択できません。メソッドは起動せず、willSelectRowAtIndexPathも起動しませんdidSelectRowAtIndexPath。メソッドで行っている唯一のことはsetEditing、編集中に戻るボタンを非表示firstResponderにし、上部の textField に割り当ててキーボードをポップアップさせることです。ファーストレスポンダーがクリックの邪魔をしているのかもしれないと思ったのですが(これはばかげているでしょう)、それをコメントアウトしても、編集中にセルの選択を実行できません。

4

2 に答える 2

16

神様、私はばかです。これらの行を追加したことはありません:

self.tableView.allowsSelection = NO; // Keeps cells from being selectable while not editing. No more blue flash.
self.tableView.allowsSelectionDuringEditing = YES; // Allows cells to be selectable during edit mode.

ゴミの質問ですみません。

于 2010-05-05T18:37:41.280 に答える
4

tableView:willSelectRowAtIndexPath:編集モードでは呼び出されないドキュメントノート。また、選択をキャンセルしても青色の点滅が発生します。ドキュメントから:

このメソッドは、ユーザーが行に触れてから指を離すまで呼び出されません。タッチダウンで強調表示されますが、その行はそれまで選択されません。UITableViewCellSelectionStyleNoneを使用して、タッチダウン時のセルのハイライトの表示を無効にすることができます。テーブルの編集プロパティがYESに設定されている場合(つまり、テーブルビューが編集モードになっている場合)、このメソッドは呼び出されません。

于 2010-05-05T18:14:43.043 に答える