【发布时间】:2014-12-04 23:06:53
【问题描述】:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
{
CGSize iosScreenSize = [[UIScreen mainScreen] bounds].size;
if (iosScreenSize.height == 667) {
UIStoryboard *iPhone6 = [UIStoryboard storyboardWithName:@"iPhone6" bundle:nil];
UIViewController *initialViewController =[iPhone6 instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]bounds]];
self.window.rootViewController = initialViewController;
[self.window makeKeyAndVisible];
}
return YES;
}
return YES;
}
这就是我在 AppDelegate.m 中添加的全部内容。我使用 Xcode 6.1。我这样做是因为我没有使用自动布局,所以我创建了一个单独的 ViewController 并将其命名为 iPhone6.h 和 iPhone6.m,并为其创建了一个故事板,将其命名为 iPhone6。我已将 iPhone6 故事板连接到 iPhone 6.h 和 .m,所以我不明白为什么当我加载 iPhone6 模拟器时,我会自动得到“应用程序窗口应该在应用程序末尾有一个根视图控制器启动”错误。为什么我会得到它?
【问题讨论】:
-
使用调试器或 NSLog 查看您分配为 root 的
initialViewController的值。 -
您可能缺少 iPhone 6 的启动图像,因此您的应用仍以兼容模式启动,高度为 568 点。这意味着代码永远不会进入 if 块。使用调试器单步执行您的代码并检查
iosScreenSize。 --- 强制自动布局宣传:为了您自己的理智,学习如何使用自动布局。管理四个不同的故事板过于复杂且容易出错。在您的应用程序的整个生命周期中,您可能会花费更多时间来调试这四个之间的不一致,而不是学习自动布局所需的时间。 -
@MatthiasBauch 出色的分析。真的应该是一个答案!
-
我拥有所有合适尺寸的启动图像。不是那样的。无论如何,我修复了错误。我知道如何使用自动布局,但由于某些奇怪的原因,我的整个应用程序会在自动布局打开时出现问题,所以我将其关闭。当它关闭时,一切都很好。这是我的第一个应用程序。对于第二个,当我从头开始时,我将使用自动布局。