2016-08-14 163 views
0

我已經嘗試使用導航視圖控制器並設置我的屏幕作爲初始視圖控制器使用故事板,它進行得很順利。使用導航控制器初始化視圖控制器作爲初始視圖控制器?[Objective-C]

但是,當我在appDelegate.m文件所做的一切程序如下圖所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 


    UIStoryboard *storyboard = [UIStoryboard storyboardWithName: @"Main" bundle:nil]; 

    FirstViewController *firstVC = [storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"]; 


    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: firstVC]; 


    self.window =[[[UIApplication sharedApplication]delegate] window]; 

    self.window.rootViewController = navController; 

    return YES; 
} 
  • 我的屏幕上的模擬器是空白。

  • 但是當我檢查is initial view controller爲故事板中的相應視圖控制器並運行。這一次,它工作,並顯示預期的屏幕。

我的問題是,爲什麼我應該檢查在故事板is initial view controller當我編程做的一切?

謝謝。

回答

1

如果您要在didFinishLaunchingWithOptions中自己創建第一個視圖控制器,則還必須實例化UIWindow。但你的任務self.window只是取回自己(哈哈),什麼都不做。你通常會做一些事情,如:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

當您使用「初始視圖控制器」選項,它需要照顧所有這一切對你來說,這就是爲什麼,當你選中該選項的工作原理。

而且不要忘了makeKeyAndVisible

[self.window makeKeyAndVisible]; 

這樣:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *firstVC = [storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: firstVC]; 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.window.rootViewController = navController; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 
+0

由於它的工作原理。但是我收到一條消息「無法爲UIMainStoryboardFile'Main'實例化默認視圖控制器 - 可能指定的入口點沒有設置? 」 – AK1

+1

聽起來您已經在目標設置中指定了「主界面」。如果您正在實例化第一個場景,則不應在「主界面」中指定故事板。 – Rob

+0

正如你所說的,我試過沒有指定「主界面」,當我運行時,這次模擬器給我一個空白屏幕。沒有消息。 – AK1

相關問題