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