9

同じにつながる 2 つのセグエを取得しましたviewController。2 つのセグエを使用して同じに接続されている 2 つのボタンがありviewControllerます。そのviewController中で、どのボタンがクリックされたかを確認する必要があります。したがって、実際には、どのセグエが使用/実行されたかを確認する必要があります。これをviewControllersクラスで確認するにはどうすればよいですか? メソッドがあることは知っていますが、2つのボタンがあるクラスに配置する必要prepareForSegueがあるため、これを目的に使用することはできません。そのクラスにいくつかの変数を設定します。prepareForSegueviewControllers

4

2 に答える 2

8

最初のビューコントローラーの prepareforsegue メソッドで、2 番目のビューコントローラーの変数を設定する必要があります。これがどのように行われるかです:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:segueIdentifier1])
    {
        SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController;
        if(sender.tag == ...) // You can of course use something other than tag to identify the button
        {
            secondVC.identifyingProperty = ...
        }
        else if(sender.tag == ...)
        {
            secondVC.identifyingProperty = ...
        }
    }
}

次に、2 番目の VC でそのプロパティをチェックして、どのようにしてそこに到達したかを理解できます。2 つのボタンのストーリーボードに 2 つのセグエを作成した場合、対応するプロパティ値を設定するには、セグエ識別子だけで十分です。次に、コードは次のようになります。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:segueIdentifier1])
    {
        SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController;
        secondVC.identifyingProperty = ...
    }
    else if([segue.identifier isEqualToString:segueIdentifier2])
    {
        SecondViewController *secondVC = (SecondViewController *)segue.destinationViewController;
        secondVC.identifyingProperty = ...
    }
}
于 2013-04-23T10:52:37.203 に答える
2

したがって、最初に、ストーリーボードで直接、またはメソッドを使用してコードを介して、セグエ識別子を設定する必要がありますperformSegueWithIdentifier。選択した方法とは無関係に、View Controller は次のメソッドを起動するため、どちらsegueがメッセージを送信しているかを知るためにオーバーライドする必要があります。次のようにします。

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {    
        if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierOne"]) {
            // button 1
        }
        if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierTwo"]) {
            // button 2
        }
}
于 2013-04-23T10:52:05.407 に答える