【发布时间】:2012-07-08 08:27:24
【问题描述】:
我有一个基于标签栏的应用程序,带有 3 个标签(视图)。在应用程序委托或加载的第一个选项卡中,我将如何在后台加载其他 2 个视图的全部内容?
现在我在每个有问题的视图中都有一个 webView。我的部分问题是它们在 viewDidLoad 中加载,但导致等待空白屏幕
谢谢
【问题讨论】:
标签: objective-c ios xcode uiwebview uitabbarcontroller
我有一个基于标签栏的应用程序,带有 3 个标签(视图)。在应用程序委托或加载的第一个选项卡中,我将如何在后台加载其他 2 个视图的全部内容?
现在我在每个有问题的视图中都有一个 webView。我的部分问题是它们在 viewDidLoad 中加载,但导致等待空白屏幕
谢谢
【问题讨论】:
标签: objective-c ios xcode uiwebview uitabbarcontroller
答案对我来说不是那么清楚.. 所以我在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
这是一种避免(根本不是)您遇到的行为的方法...在后台加载的概念要复杂得多。
【讨论】:
尝试:
viewController.view.hidden = NO;
对于您要预加载的任何 viewController,它已被分配和初始化。也就是说,在 alloc 和 initWithNibName:... 完成之后。
【讨论】:
viewController.view 的任何语句,并获得相同的效果。我认为view 属性可能是通过延迟加载实现的,因此一旦有人尝试引用它,它就会加载。
我通常使用这样的东西:
if (vc.view == nil) // force load of view
{
NSLog(@"%s ***** ERROR: view == nil: %@", __PRETTY_FUNCTION__, vc);
}
注意:在调用 vc.view 之后,视图应该永远为零——这是一个非常严重的分配错误。
【讨论】: