我有两个导致相同的segue viewController
。有 2 个按钮viewController
使用 2 个 segue 连接到相同的按钮。在那viewController
我需要检查哪个按钮被点击了。所以实际上我需要检查使用/执行了哪个segue。如何在 viewControllers 类中检查这一点?我知道有prepareForSegue
方法,但我不能将其用于我的目的,因为我需要将prepareForSegue
2 个按钮所在的类中,我不希望它在那里,但我想要它在viewControllers
类中,因为我需要访问并在该类中设置一些变量。
问问题
7191 次
2 回答
8
您需要在第一个视图控制器的 prepareforsegue 方法中设置第二个视图控制器的变量。这是这样做的:
- (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 = ...
}
}
于 2013-04-23T10:52:37.203 回答
2
因此,首先您需要直接在故事板中设置您的 segues 标识符,或者使用该performSegueWithIdentifier
方法通过您的代码设置。独立于您选择的方式,您的视图控制器将触发以下方法,因此您需要覆盖它以了解哪个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 回答