【问题标题】:Working with View Controllers in Storyboards在 Storyboard 中使用视图控制器
【发布时间】:2015-07-30 23:51:03
【问题描述】:

我开始学习 iOS,我有一个问题:当我启动项目时,应用程序将加载所有视图控制器还是只加载 Main.storyboard 中的初始视图控制器?

如果我的应用程序有很多视图控制器,例如 50 个 VC,我想检查一次加载 50 个 VC 或在我调用时加载每个 VC,例如:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];

经过研究并询问了一些朋友,我在Apple doc中看到:

主情节提要在应用的信息属性列表中定义 文件。如果在这个文件中声明了一个主故事板,那么当你的 应用启动后,iOS 会执行以下步骤:

  1. 它会为您实例化一个窗口。
  2. 它加载主情节提要并实例化其初始视图控制器。
  3. 它将新的视图控制器分配给窗口的 rootViewController 属性,然后使窗口在 屏幕。

【问题讨论】:

  • 只是初始视图控制器.. 它会在您继续操作时加载其他视图控制器!
  • 为什么不自己检查一下呢?欢迎来到堆栈溢出,请阅读此stackoverflow.com/help/how-to-ask
  • 请学习术语:延迟加载
  • @holex: 在这个 url:stackoverflow.com/questions/9161722/…,可以从 Xib 文件加载另一个视图,我知道,但我正在考虑使用 Xib 或在 Main.storyboard 中使用 ContainerView,有什么偏好和原因?
  • 你已经尝试过什么?也许您可以向我们展示您以前做过的事情:mattgemmell.com/what-have-you-tried。通常会在需要时加载视图。如果您有一个固定编号为UIViewControllers 的菜单,您可以在开始时执行此操作。

标签: ios cocoa-touch storyboard


【解决方案1】:

它只加载 Main.storyboard 中设置的 Initial View Controller。您可以将任何视图控制器设置为故事板中的初始视图控制器-> select any view controller -> go to utility portion of xCode-> go to attribute inspector-> now check is Initial View Controller.

【讨论】:

  • 感谢 iHulk,但我的意思是检查我是否启动应用程序,它会加载所有 VC 并显示初始视图控制器,或者只是加载初始视图控制器并显示它。
  • @l3adl3oy 是的,这就是我要告诉你的,它只会在启动时加载 Initial View Controller,然后按需加载所有其他 VC
  • 我明白了,我用答案更新了我的问题,感谢您的帮助
【解决方案2】:

来自文档:

一个 UIStoryboard 对象封装了存储在 Interface Builder 故事板资源文件。这个视图控制器 图表示您的全部或部分的视图控制器 应用程序的用户界面。通常,视图控制器在 故事板被实例化并自动创建以响应 在情节提要本身中定义的动作。但是,您可以使用 故事板对象实例化初始视图控制器 故事板文件或实例化您想要的其他视图控制器 以编程方式呈现。

StoryBoard 将在加载应用程序时仅加载初始 viewController。其他视图控制器将在执行 segue 时加载或通过以下方法手动加载。

- instantiateInitialViewController
- instantiateViewControllerWithIdentifier:

阅读更多here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多