我有一個基於標籤欄的應用程序,帶有3個選項卡(視圖)。我將如何在應用程序委託或加載的第一個選項卡中加載其他2個視圖的全部內容?Objective C iOS預加載視圖
現在我在每個有問題的視圖中都有一個webView。我的問題的部分原因是它們被裝在viewDidLoad中,但造成的等待與空白屏幕
感謝
我有一個基於標籤欄的應用程序,帶有3個選項卡(視圖)。我將如何在應用程序委託或加載的第一個選項卡中加載其他2個視圖的全部內容?Objective C iOS預加載視圖
現在我在每個有問題的視圖中都有一個webView。我的問題的部分原因是它們被裝在viewDidLoad中,但造成的等待與空白屏幕
感謝
答案不是很清楚,我..所以我你有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
這是爲了避免(不是全部)您所遇到的行爲方式......在後臺加載的概念是一個複雜得多。
嘗試:
viewController.view.hidden = NO;
任何的viewController要預先加載它已經分配並初始化了beeb。也就是說,在alloc和initWithNibName:...完成之後。
我通常使用這樣的事:
if (vc.view == nil) // force load of view
{
NSLog(@"%s ***** ERROR: view == nil: %@", __PRETTY_FUNCTION__, vc);
}
注:調用vc.view後,認爲應該永遠是零 - 這是一個非常嚴重的分配錯誤。
如果我沒有記錯的話,你可以使用'viewController.view'的任何語句,並獲得相同的效果。我認爲'view'屬性可能是用延遲加載實現的,所以只要有人試圖引用它,它就會加載。 – Nate 2012-07-08 10:44:46
但這個不需要「返回」,所以沒有警告顯示! :) – 2013-03-01 19:41:37
這在Xcode 6中更爲重要(至少在使用Swift時)會在不使用viewController.view的值時報告錯誤。 – 2014-10-01 19:19:52