在父视图控制器上注册Segue以在子视图控制器上使用

时间:2015-06-05 15:33:46

标签: ios objective-c ios7 ios8 xcode6

我想知道是否可以在父视图控制器上注册Segue以在子视图控制器中使用。

示例:我有一个自定义AlertViewController,我的所有主视图控制器都继承自BaseViewController。我在大多数这些中使用这个自定义AlertViewController而不是UIAlertView,我现在必须复制AlertViewController并将它连接到我的故事板中的BaseViewController的每个子类。

我有没有办法将segue注册到BaseViewController类的AlertViewController,以便任何子类都可以成功使用performSegueWithIdentifier:sender:

1 个答案:

答案 0 :(得分:0)

我已经确定了一种方法来做我想要的事情。我只需要在performSegueWithIdentifier:sender:方法中的BaseViewController类中手动执行segue。

示例:

在我的BaseViewController

- (void)performSegueWithIdentifier:(NSString *)identifier withSender:(NSObject *)sender {

    if ([identifier isEqualToString:@"MyCustomSegue"]) {
        MyNewViewController *MNVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MyNewViewController"];

        ...

        [self presentViewController:MNVC animated:YES completion:nil];

        return;
    }

    [super performSegueWithIdentifier:identifier withSender:sender];
}

在我的ChildViewController

[self performSegueForIdentifier:@"MyCustomSegue" sender:nil];

通过这种方法,我不再需要复制MyNewViewController故事板对象并将其连接到我的故事板中的每个ChildViewController。我必须在我的故事板中创建MyNewViewController,并确保它的storyboardID是我在代码中称之为的任何内容。