如何覆盖故事板中定义的UIBarButtonItem触发的segue

时间:2012-08-26 15:19:23

标签: objective-c ios uistoryboard

我在故事板iPhone应用程序中有一个UIViewController,我需要在几个地方重用它。在故事板中,有一个UIBarButtonItem,它有一个触发segue到另一个控制器。但是,在某些情况下,我想覆盖按钮的行为以转换到不同的视图控制器。我认为必须有一种方法可以使用指定目标视图控制器的消息初始化视图控制器,或者在控制器初始化之后但在推送之前设置一些属性?

一个挑战似乎是segues不能以编程方式定义(基于我到目前为止所读到的内容),而且我认为我不能在故事板中的同一个视图控制器上有多个segue。所以我可能需要这样做:

[self presentModalViewController:myNewVC animated:YES];

...而不是使用segue,但我不知道如何覆盖故事板中定义的按钮的行为来这样做。

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

只需为某些条件创建IBActionBOOL,以选择应实例化哪个视图控制器。

 UIViewController *viewController;
    if (someCondition) {
        viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"someViewID"];
    }else{
        viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"someOtherID"];
    }
    [self presentViewController:viewController animated:YES completion:nil];