我正在使用Xcode 4.5和iOS6爲iPhone編寫應用程序。我還創建一個新的UIWindow
能夠管理狀態欄的區域(在那裏顯示的消息等) 我用故事板和我的appDelegate
方法是這樣的:「應用程序窗口預計有一個根視圖控制器」有條件的外觀
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
的消息在控制檯中沒有出現當我把它叫做viewDidAppear
方法:
- (void)viewDidAppear:(BOOL)animated {
if (!window) {
window = [[SGStatusBar alloc] initWithFrame:CGRectZero];
window.frame = [[UIApplication sharedApplication] statusBarFrame];
window.alpha = 0.5f;
[self.view.window makeKeyAndVisible]; // has to be main window of app
window.hidden = NO;
}
}
同樣的方法,把在viewDidLoad
給出了控制檯的警告:
2012-12-27 11:34:20.838 NewApp[433:c07] Application windows are expected to have a root view controller at the end of application launch
這是因爲我創建了一個新的UIWindow
?爲什麼這兩種方法之間的差異如此之大?
而且,最重要的是,我怎麼能擺脫這個警告而把代碼放在viewDidLoad
方法?
編輯:
我也遇到了同樣的問題here,但它不是我想解決這個問題(它實際上是我解決它現在的方式)
方式我試着做這個設置我的當前視圖控制器作爲我的窗口的根視圖控制器:
ViewController *vcB = [[UIViewController alloc] init];
window.rootViewController = vcB;
但我不斷收到一個警告是s ays:
Incompatible pointer types initializing 'ViewController *__strong' with an expression of type 'UIViewController *'
我認爲它要求你創建一個NavigationController並添加你的第一個控制器作爲你的navigationcontroller的根 – superGokuN
@superGokuN我相信你錯了。爲什麼我需要一個只有1個視圖的應用程序中的NavigationController?我不想*或*需要使用一個。 –
至於差異嘗試:http://stackoverflow.com/questions/11254697/difference-between-viewdidload-and-viewdidappear – Paxic