在设置根视图时,“应用程序窗口应在应用程序启动结束时具有根视图控制器”消息

时间:2013-03-09 07:32:25

标签: ios appdelegate launching-application

我的App Delegate文件中有以下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MBFeedViewController *feedViewController = [[MBFeedViewController alloc] init];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:feedViewController];
    [self.window makeKeyAndVisible];
    return YES;
}

然后当我运行我的应用程序时,控制台会输出消息:

  

应用程序窗口应在应用程序启动结束时具有根视图控制器

无法想出这个。当我设置窗口FeedViewController时,nil不是RootViewController

1 个答案:

答案 0 :(得分:3)

  

无法想出这个。我设置时feedViewController不是nil   窗口的rootviewcontroller。

确保您正确初始化视图控制器。最常见的是使用指定的初始化程序-initWithNibName:bundle:。 H2CO3指出init也没问题。无论哪种方式,请确保您还通过调用[super initWithNibName:... bundle:...][super init]来初始化超类。

接下来,确保feedViewController.view不是零。设置窗口的根视图控制器时,该窗口将该控制器的视图安装为自己的内容。视图控制器通常在第一次访问view属性时创建其视图,因此除非创建视图失败,否则您没有理由得到nil

最后,尝试实例化一个普通的旧UIViewController并将 设置为窗口的根视图控制器。你得到同样的警告吗?如果是的话,也许你偶然发现了一个错误。如果不是,请仔细查看MBFeedViewController,尤其是初始值设定项,-loadView-viewDidLoad以及在视图控制器生命周期早期调用的其他方法。