我得到两个segue,导致相同的viewController
。有2个按钮使用2个segues连接到同一个viewController
。在那viewController
我需要检查点击了哪个按钮。所以实际上我需要检查使用/预制的segue。我如何在viewControllers类中检查这个?我知道有prepareForSegue
方法,但我不能将它用于我的目的,因为我需要将prepareForSegue
放在2个按钮所在的类中,我不希望它在那里但是我想要它在viewControllers
类中,因为我需要在该类中访问和设置一些变量。
答案 0 :(得分:8)
您需要在第一个viewftroller的prepareforsegue方法中设置第二个viewcontroller的变量。这就是它的完成方式:
- (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个按钮创建了2个segue,则只有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 = ...
}
}
答案 1 :(得分:2)
首先,您需要使用performSegueWithIdentifier
方法直接在storyborads中或通过代码设置segue标识符。
独立于您选择的方式,您的视图控制器将触发以下方法,因此您需要覆盖它以了解哪个segue
正在发送消息,您喜欢这样:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierOne"]) {
// button 1
}
if ([segue.identifier isEqualToString:@"ButtonSegueIdentifierTwo"]) {
// button 2
}
}