如何在应用启动时加载其他选项卡的视图?
Posted
技术标签:
【中文标题】如何在应用启动时加载其他选项卡的视图?【英文标题】:How can i load views of other tabs on the app launch? 【发布时间】:2017-01-31 15:53:57 【问题描述】:为了更好的用户体验,我想提前加载其他标签。
我的 UITabBarController 中有 4 个选项卡,当用户选择除第一个视图控制器之外的特定选项卡时,每个 UIViewController 的 viewDidLoad() 都会被调用。
在启动应用程序时,在用户选择该选项卡之前,在其他选项卡中加载视图的最佳方式是什么?
【问题讨论】:
视图加载真的是问题,还是您将其与其他一些问题(例如通过网络加载数据)混为一谈?与其尝试更改视图加载生命周期,不如将所需的行为与视图加载分离,这样您就可以直接触发它。 @Jonah,我的 NSFetchedResultsController 在第二个选项卡中,我在第一个选项卡的 coredata 中保存了一些数据,NSFetchedResultsController 无法按预期工作,除非在保存数据之前加载了该选项卡。 不同选项卡的视图控制器之间不应有任何依赖关系。每个视图控制器都应该独立存在。 这听起来像是一个不同的问题;关于使用 NSFetchedResultsController 的一些混淆。在 Core Data 中使用模型不应该依赖于 UIViewController 的视图状态。但是,由于我们看不到您的控制器的实现,因此此问题中没有足够的细节来提供有用的答案。 【参考方案1】:要强制调用viewDidLoad
方法,您只需引用视图控制器的view
属性即可。
这样的事情可以做到:
_ = someViewController.view // causes `viewDidLoad` to be called.
【讨论】:
【参考方案2】:尝试从UITabBarController
的堆栈中调用每个视图控制器上的loadViewIfNeeded()
方法。根据文档它
如果尚未加载,则加载视图控制器的视图。
您可以通过viewControllers
属性找到UITabBarController
的所有视图控制器。
【讨论】:
以上是关于如何在应用启动时加载其他选项卡的视图?的主要内容,如果未能解决你的问题,请参考以下文章