希望在iPhone故事板应用程序中最大化重用

时间:2012-03-29 11:00:50

标签: iphone ios xcode storyboard

我正在编写一个复杂的故事板应用程序,当遇到跨视图控制器和不同应用程序路径的代码重用时,我遇到了一些问题。

我可以转到没有直接连接到当前的ViewController吗?

如何有条件地从一个按钮到几个ViewControllers?连接两者都不起作用。

我可以从应用程序中的任意位置输入ViewController序列吗?

提出几个问题。有人有任何想法或好例子吗?

1 个答案:

答案 0 :(得分:6)

  

我可以转到没有直接连接到当前的ViewController吗?

没有segue。但是,您可以模拟地从故事板中推送或呈现viewController,就像使用.xib文件一样。

// if self was created from code or from a .xib:
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryBoard" bundle:nil];
// if self was instantiated from within a storyboard:
UIStoryboard *storyBoard = self.storyboard;  

MyFancyViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"MyFancyViewControllerIdentifier"];
[self presentModalViewController:viewController animated:YES];

但你必须先设置标识符。在故事板中选择viewController,然后在属性检查器中执行此操作。

一旦MyFancyViewController可见,您就可以使用它的所有segue。在代码和故事板段之间切换可能会感到奇怪,但这并没有错。它使整个故事板的东西真的可用。


  

如何有条件地从一个按钮到几个ViewControllers?连接两者都不起作用。

添加两个或多个从viewController开始的segue(不是从按钮或任何其他视图开始。例如,在状态栏中启动您的控件 - 拖动)到目标viewControllers。为它们设置标识符并使​​用如下代码:

if (someState) {
    [self performSegueWithIdentifier:@"MyFirstSegueIdentifier" sender:somethingOrNil];
}
else {
    [self performSegueWithIdentifier:@"MySecondSegueIdentifier" sender:somethingOrNil];
}

  

我可以从应用程序中的任意位置输入ViewController序列吗?

是的,如果您使用“旧学校”视图控制器管理。与第一部分类似。实例化您的viewController并使用代码呈现它。