4

我的 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.

4

1 回答 1

3

想不通这个 当我设置窗口的 rootviewcontroller 时 feedViewController 不为零。

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

接下来,确保它feedViewController.view不为零。当您设置窗口的根视图控制器时,窗口将安装该控制器的视图作为它自己的内容。视图控制器通常在第一次访问它的属性时创建它的视图,所以除非创建视图失败,否则view你没有理由去那里。nil

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

于 2013-03-09T07:42:58.127 回答