希望在 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(纵向和横向)使用单独的故事板吗?

仅在从iPhone 11开始使用故事板启动后,应用程序启动时出现黑屏

带有故事板的 CollectionView 样式

iOS 故事板视图约束问题

故事板布局与屏幕边缘齐平,但在实际 iPhone 7 Plus 中显示间隙