4

私は 3 つのボタンを持っています。それらはすべて同じことを行い、セグエを実行します。すべて同じ接続にリンクされています。

- (IBAction)difficultyButtonPressed:(id)sender {
    // Any difficulty selected
    [self performSegueWithIdentifier:@"mainGameTurnGuess" sender:self];
}

私がする必要があるのは、prepareForSegueメソッドでどのボタンが押されたかを判断することです。3 つのボタンのうち、どのボタンが押されているかを知る方法を教えてください。

これはローカリゼーションのために変更されるため、ボタンの文言/テキストを見ないでください。

4

4 に答える 4

0

ボタンの復元 ID を使用することもできます。prepareForSegue では、次のことができます。

UIButton *btnSender;
if ([sender isMemberOfClass:[UIButton class]])
{
    btnSender = (UIButton *)sender;
}

// Then you can reference the Restoration Id or a tag of the clicked button to do further conditional logic if you want.
if([btnSender.restorationIdentifier isEqualToString:@"myBtn1"])
{
   //do something
}

Appleのドキュメントを引用します:

セグエは複数のソースからトリガーされる可能性があるため、セグエおよび送信者パラメーターの情報を使用して、アプリ内の異なる論理パス間のあいまいさを解消できます。たとえば、セグエがテーブル ビューから発生した場合、sender パラメータは、ユーザーがタップしたテーブル ビュー セルを識別します。その情報を使用して、宛先ビューコントローラーにデータを設定できます

于 2014-03-20T09:12:58.033 に答える
0

それが押されたボタンであるため、sender送信されたパラメーターを転送できます。difficultyButtonPressed:つまり、次のようにすると:

- (IBAction)difficultyButtonPressed:(id)sender {
    // Any difficulty selected
    [self performSegueWithIdentifier:@"mainGameTurnGuess" sender:sender];
}

sender送信されるパラメーターはprepareForSegue:sender:、押されたボタンになります。

于 2013-10-09T20:31:50.640 に答える