“应用程序窗口是预期的......”警告,但应用程序运行良好

时间:2014-03-06 18:03:23

标签: ios objective-c cocoa-touch appdelegate uiwindow

启动基于iPad的iOS应用程序后,我的控制台出现以下错误:

"Application windows are expected to have a root view controller at the end of application launch"

我已经查看过引用此错误的其他问题的答案,但这些问题似乎都不是我的特定问题。

事实上,我遇到的唯一症状是app启动时控制台中的消息。我的应用程序似乎运行正常并且完全按照我的意愿执行。

我正在使用单个故事板文件(Main.storyboard)来生成我的应用程序的UI(带有几个用于自定义视图的XIB文件)。我的所有UIViewController子类UI都包含在单个故事板中。该故事板在我的“部署信息”中被指定为“主界面”。

以下是我AppDelegate中的代码(我删除了一些非基于UI的应用初始化代码):

- (BOOL)application:(UIApplication *)application
         didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    MSSAppSingleton *app                = [MSSAppSingleton singleton];

    // Other, non-UI code, like TestFlight, etc.

    UISplitViewController *split        = (UISplitViewController *)self.window.rootViewController;
    UINavigationController *leftNavVc   = split.viewControllers[0];
    UINavigationController *rightNavVc  = split.viewControllers[1];
    app.containerSplitViewController    = split;

    app.leftRoot                        = leftNavVc.viewControllers[0];
    app.rightRoot                       = rightNavVc.viewControllers[0];

    return YES;
}

此代码似乎运行没有问题。我正在抓取这些引用以供以后的UI操作,所有这些都可以按照需要运行。上面的每一行代码都按照我的预期运行。 self.window有一个有效的参考。 self.window.rootViewController也有。

所以,这不是一个“问题”,除了我遵循“将每个警告视为一个错误”的理念,并希望得到这个警告消失。有没有人见过这个?我正在使用Xcode 5.0.2并运行iPad 7.0.3模拟器。

2 个答案:

答案 0 :(得分:1)

MSSAppSingleton *app                = [MSSAppSingleton singleton];

应该在

之前调用
app.containerSplitViewController    = split;

答案 1 :(得分:0)

设置根视图控制器时,Xcode喜欢它

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

我自己不会使用故事板。

您可能需要设置根目录,而不仅仅是获取它,然后将内容应用于它以使其满意。