2012-07-08 57 views
7

我有一個基於標籤欄的應用程序,帶有3個選項卡(視圖)。我將如何在應用程序委託或加載的第一個選項卡中加載其他2個視圖的全部內容?Objective C iOS預加載視圖

現在我在每個有問題的視圖中都有一個webView。我的問題的部分原因是它們被裝在viewDidLoad中,但造成的等待與空白屏幕

感謝

回答

8

答案不是很清楚,我..所以我你有3 UIViewController(或它們的子類)包含在UITabBarViewController,迫使他們加載其視圖的方式是請他們每個人的-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 

這是爲了避免(不是全部)您所遇到的行爲方式......在後臺加載的概念是一個複雜得多。

7

嘗試:

viewController.view.hidden = NO; 

任何的viewController要預先加載它已經分配並初始化了beeb。也就是說,在alloc和initWithNibName:...完成之後。

+0

如果我沒有記錯的話,你可以使用'viewController.view'的任何語句,並獲得相同的效果。我認爲'view'屬性可能是用延遲加載實現的,所以只要有人試圖引用它,它就會加載。 – Nate 2012-07-08 10:44:46

+4

但這個不需要「返回」,所以沒有警告顯示! :) – 2013-03-01 19:41:37

+0

這在Xcode 6中更爲重要(至少在使用Swift時)會在不使用viewController.view的值時報告錯誤。 – 2014-10-01 19:19:52

4

我通常使用這樣的事:

if (vc.view == nil)  // force load of view 
{ 
    NSLog(@"%s ***** ERROR: view == nil: %@", __PRETTY_FUNCTION__, vc); 
} 

注:調用vc.view後,認爲應該永遠是零 - 這是一個非常嚴重的分配錯誤。