如何在应用启动时加载其他选项卡的视图?

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 的所有视图控制器。

【讨论】:

以上是关于如何在应用启动时加载其他选项卡的视图?的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 4 路由到带有选项卡的视图会触发整页重新加载

应用程序启动时视图的定位不同

UIViewController - 加载缓慢

iOS:Tabbar - 加载选项卡的默认状态

当页面通过ajax作为部分加载时,如何重新绑定淘汰视图模型?

在段类型选项卡的子视图中创建 uitableview