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 启动时添加新的视图控制器