Objective C iOS 预加载视图

Posted

技术标签:

【中文标题】Objective C iOS 预加载视图【英文标题】:Objective C iOS pre load views 【发布时间】:2012-07-08 08:27:24 【问题描述】:

我有一个基于标签栏的应用程序,带有 3 个标签(视图)。在应用程序委托或加载的第一个选项卡中,我将如何在后台加载其他 2 个视图的全部内容?

现在我在每个有问题的视图中都有一个 webView。我的部分问题是它们在 viewDidLoad 中加载,但导致等待空白屏幕

谢谢

【问题讨论】:

【参考方案1】:

答案对我来说不是那么清楚.. 所以我在UITabBarViewController 中包含 3 个UIViewController(或它们的子类),强制它们加载视图的方法是调用-view 属性在您添加到 UITabbarViewController 实例之前,在 AppDelegate 丰富的它们中的每一个上。像这样的:

UIViewController * myViewController = [[UIViewController alloc] initWithNibName:@"mynib" bundle:nil];
[myViewController view];//<--here you are forcing the view to be loaded before it will be called from the tabbatviewcontroller

这是一种避免(根本不是)您遇到的行为的方法...在后台加载的概念要复杂得多。

【讨论】:

【参考方案2】:

尝试:

viewController.view.hidden = NO; 

对于您要预加载的任何 viewController,它已被分配和初始化。也就是说,在 alloc 和 initWithNibName:... 完成之后。

【讨论】:

如果我没记错的话,您实际上可以使用viewController.view 的任何语句,并获得相同的效果。我认为view 属性可能是通过延迟加载实现的,因此一旦有人尝试引用它,它就会加载。 但是这个不需要“返回”,所以没有显示警告! :) 这在 Xcode 6 中更为重要(至少在使用 Swift 时),它在不使用 viewController.view 的值时会报错。【参考方案3】:

我通常使用这样的东西:

if (vc.view == nil)      // force load of view

    NSLog(@"%s ***** ERROR: view == nil: %@", __PRETTY_FUNCTION__, vc);

注意:在调用 vc.view 之后,视图应该永远为零——这是一个非常严重的分配错误。

【讨论】:

以上是关于Objective C iOS 预加载视图的主要内容,如果未能解决你的问题,请参考以下文章

如何通过iOS Objective C中的appDelegate从另一个视图控制器重新加载表视图

在应用程序 IOS Objective C 启动时添加新的视图控制器

从 iOS 中的共享按钮启动应用程序 - Objective C 和 React Native

Android 预加载 TabHost 视图

在 Objective C 中从 web 目录加载多个图像

ios/objective c:迭代 UIView.subviews 仅显示部分视图