希望在 iPhone 故事板应用程序中最大限度地重用
Posted
技术标签:
【中文标题】希望在 iPhone 故事板应用程序中最大限度地重用【英文标题】:Looking to maximize reuse in an iPhone storyboard application 【发布时间】:2012-03-29 11:00:49 【问题描述】:我正在编写一个复杂的故事板应用程序,但在跨视图控制器和不同应用程序路径重用代码时遇到了一些问题。
我可以选择不直接连接到当前的 ViewController 吗?
如何有条件地从一个按钮切换到多个 ViewController?连接两者都不起作用。
我可以从应用程序中的任意位置输入 ViewController 序列吗?
只是提出了几个问题。有人有什么想法或好的例子吗?
【问题讨论】:
【参考方案1】:我可以选择不直接连接到当前的 ViewController 吗?
没有转场。但是您可以从情节提要中以模态方式推送或呈现 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。在代码和故事板segues之间切换可能会感觉很奇怪,但这并没有错。它使整个故事板的东西真正可用。
如何有条件地从一个按钮切换到多个 ViewController?连接两者都不起作用。
添加两个或多个从 viewController 开始的 segue(不是从按钮或任何其他视图。例如,在状态栏上开始控制拖动)到目标 viewController。为它们设置标识符并使用如下代码:
if (someState)
[self performSegueWithIdentifier:@"MyFirstSegueIdentifier" sender:somethingOrNil];
else
[self performSegueWithIdentifier:@"MySecondSegueIdentifier" sender:somethingOrNil];
我可以从应用程序中的任意位置进入 ViewController 序列吗?
是的,如果您使用“老派”视图控制器管理。与第一部分类似。实例化您的 viewController 并用代码呈现它。
【讨论】:
事实上你不能使用任何 segues 之后:[self presentModalViewController:viewController animated:YES];因为它以模态方式呈现 viewController。我需要做的是:[self.navigationController pushViewController:viewController animated:YES];以上是关于希望在 iPhone 故事板应用程序中最大限度地重用的主要内容,如果未能解决你的问题,请参考以下文章
我可以为 iPhone 和 iPad(纵向和横向)使用单独的故事板吗?