2

當我創建一個iboutlet到我的navigationController並嘗試將其添加到當前視圖它不顯示任何東西。它非常奇怪,當我在代碼中初始化我的navigationController,然後將它添加到視圖中,它完美地工作。iphone navigationController不會顯示,除非我訪問.view

它甚至可以在mainWindows.xib中創建一個並將其添加到我的applicationDidFinishLaunching方法中的視圖中。

但只要我嘗試從另一個viewController加載它失敗,我留下一個空白屏幕。

所以它工作時,我以編程方式添加它或將其添加到我的mainWindow.xib。

我一直在嘗試幾個小時才能使它工作。這似乎很簡單,但我無法讓它在其他xib文件中工作。

我的設置:

#import "RootViewController.h" 

RootViewController *rootViewController=[[RootViewController alloc] init]; 
[window addSubview:rootViewController.navController.view]; 

我RootViewController的有IBOutlet中的navigationController。

有沒有人有想法?我完全不明白爲什麼這個簡單的東西不起作用。我錯過了什麼,它把我逼瘋了。

****更新**** 上述代碼的作品,如果我將它更改爲: 我需要訪問rootViewController.view,否則它不會工作,爲什麼?

#import "RootViewController.h" 

RootViewController *rootViewController=[[RootViewController alloc] init]; 
if(rootViewController.view){ 
NSLog(@"nil"); 
} 
[window addSubview:rootViewController.navController.view]; 

在此先感謝!

回答

1

這是因爲訪問view實際上調用了getter,它會延遲地(按需)創建控制器的視圖。 rootControllerview在您首次調用view getter方法之前不存在。創建第一個應用視圖的常用方法是

[window addSubview:someController.view] 

並且它負責創建視圖。

0

所有這些都發生在我身上的問題一直是我忘了在Interface Builder中連接一些東西。確保檢查您的控制器是否連接到應用程序委託或任何地方的rootViewController插座。同時確保窗口已連接。

如果某些東西沒有連接,那麼你在插座中以零結束,所以self.rootViewController.navController.view最終成爲[[nil navController]視圖],它是零,並嘗試將nil作爲子視圖添加我認爲。類似地,如果window爲零,那麼最終會與nil交談,但它可能是未連接的rootViewController。

+0

感謝您的回答!我檢查了一切,似乎是oke,我通過訪問rootViewController.view來解決它,但它不知道爲什麼必要 – Bjorn 2010-01-10 13:47:04

0

我有一個類似的問題,實際上甚至更加狡猾,當控制器僅在IB連接時,應用程序在iPad上正常加載但在iPhone上我有一個空白屏幕,調試器顯示控制器的視圖有一個框架這是0,0,0,0 我通過重置ApplicationDidFinishLaunching代碼中的rootviewcontroller插座來解決它,但我不明白爲什麼這不起作用

相關問題