如何检查使用哪个segue

我得到了两个segue的导致相同的viewController 。 有2个button连接到相同的viewController使用2个赛段。 在那个viewController我需要检查哪个button被点击。 所以实际上我需要检查使用/执行哪个segue。 我怎样才能检查这个viewControllers类? 我知道有prepareForSegue方法,但我不能用于我的目的,因为我需要把prepareForSegue在2个button的类,我不想在那里,但我希望它在viewControllers类,因为我需要访问和设置该类中的一些variables。

您需要在第一个prepareforsegue方法中设置第二个viewcontroller的variables。 这是如何完成的:

 - (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 = ... } } } 

然后你可以在第二个vc中查看这个属性来理解你是如何来到这里的。 如果在故事板中为2个button创build了2个segues,则只有segue标识符足以设置相应的属性值。 然后代码变成这样:

 - (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 = ... } } 

所以首先你需要直接在storyborads中设置你的segues标识符,或者使用performSegueWithIdentifier方法通过你的代码。 独立的方式你select,你的视图控制器将触发以下方法,所以你需要覆盖它来知道哪个segue发送消息,你是这样做的:

  -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierOne"]) { // button 1 } if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierTwo"]) { // button 2 } }