2

テーブルビューがあり、そのセルにセグエを接続しました。セルを有効または無効にする条件を指定したい。

これは私のコードですdidSelectRowAtIndexpath

if (condition) {
    NSLog(@"Nothing);
} else {
    [self performSegueWithIdentifier:@"segueName" sender:tableView];
}

NSLogしかし、印刷されたものを見たとしても、毎回セグエが呼び出されます。

ここでのいくつかの回答は、ビューコントローラーにセグエを配置する必要があると述べましたが、ストーリーボードではそれを行うことができず、セルに配置することしかできません。

私は何を逃したのですか?

4

1 に答える 1

3

セルからInterfaceBuilderの次のシーンにセグエを移動することもできますか?もしそうなら、それは何をするかに関係なく呼び出されdidSelectRowAtIndexPathます。

2つのアプローチが可能です。

  1. iOS 6のみの場合は、didSelectRowAtIndexPath完全に削除し、セルと次のシーンの間にセグエを配置してからshouldPerformSegueWithIdentifier、条件付きロジックを実装してそこに配置できます。

    - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
    {
        if ([identifier isEqualToString:@"segueName"])
        {
            if (condition)
                return NO;
        }
        return YES;
    }
    
  2. iOS 5との互換性が必要な場合は、セルと次のシーンの間のセグエを削除する必要がありますが、ビューコントローラー間を移動する必要があります(つまりcontrol、シーンの下部にあるバーの最初のビューコントローラーのアイコンからドラッグして次のシーン)。このようにして、セグエは定義されますが、セルに接続されません。そして、あなたdidSelectRowAtIndexPathはあなたの質問であなたが提案する条件付きロジックを使うことができます:

    シーン間のセグエ

于 2013-01-25T22:46:30.817 に答える