如何检查使用哪个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 } }