我的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
。
答案 0 :(得分:3)
无法想出这个。我设置时feedViewController不是nil 窗口的rootviewcontroller。
确保您正确初始化视图控制器。最常见的是使用指定的初始化程序-initWithNibName:bundle:
。 H2CO3指出init
也没问题。无论哪种方式,请确保您还通过调用[super initWithNibName:... bundle:...]
或[super init]
来初始化超类。
接下来,确保feedViewController.view
不是零。设置窗口的根视图控制器时,该窗口将该控制器的视图安装为自己的内容。视图控制器通常在第一次访问view
属性时创建其视图,因此除非创建视图失败,否则您没有理由得到nil
。
最后,尝试实例化一个普通的旧UIViewController
并将 设置为窗口的根视图控制器。你得到同样的警告吗?如果是的话,也许你偶然发现了一个错误。如果不是,请仔细查看MBFeedViewController
,尤其是初始值设定项,-loadView
,-viewDidLoad
以及在视图控制器生命周期早期调用的其他方法。