2012-02-02 103 views
0

無論何時運行應用程序,我的應用程序都會提供一個模態視圖控制器(密碼輸入表單)。我存在於兩個應用委託方法的視圖控制器:爲什麼在applicationDidFinishLaunchingWithOptions中不顯示模式視圖控制器?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self.window.rootViewController presentModalViewController:self.passcodeViewController animated:NO]; 
    //... 
    return YES; 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if (!self.passcodeViewController.view.window) { 
     [self.window.rootViewController presentModalViewController:self.passcodeViewController animated:NO]; 
    } 
} 

呼叫呈現在application:didFinishLaunchingWithOptions:方法不呈現視圖控制器,其中如在applicationDidBecomeActive:呼叫確實模態視圖控制器。爲什麼是這樣?

編輯:我想提一提,每下面的評論,我是用故事板和self.window.rootViewController確確實指向一個對象(基本上,它不是零)

+0

rootViewController如何分配給窗口? MainWindow.xib中?故事情節?我的猜測是,self.window或self.window.rootViewController尚未在didFinishLaunchingWithOptions中分配。 – jsd 2012-02-02 23:29:50

+0

故事板 - 我忘了提及self.window.rootViewController確實指向視圖控制器,即。如果主要的筆尖(或者在我的情節故事板)已經被加載,它不是零 – 2012-02-03 00:19:42

回答

0

從在UIApplicationDelegate協議手冊參考:

您的應用程序已經啓動,其主要筆尖 文件加載後調用它。在調用此方法時,您的應用程序處於非活動狀態。

+0

。爲什麼然後調用在這個視圖之上添加另一個視圖不起作用? – 2012-02-03 00:21:22

+0

嗯所以問題不在於當你想要的方法沒有被調用?我想你已經嘗試添加一個'NSLog'語句來查看它的調用時間。視圖不會被呈現的原因是因爲NavigationController不是當前的響應者,或者可能它正在被呈現,但是在視圖的另一層或層級中。 – 2012-02-03 04:24:19

相關問題