使用导航控制器初始化视图控制器作为初始视图控制器?[Objective-C]

使用导航控制器初始化视图控制器作为初始视图控制器?[Objective-C]

问题描述:

我已经尝试使用导航视图控制器并设置我的屏幕作为初始视图控制器使用故事板,它进行得很顺利。使用导航控制器初始化视图控制器作为初始视图控制器?[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当我编程做的一切?

谢谢。

如果您要在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