"应用程序窗口应该在应用程序启动结束时具有根视图控制器"仅在iPad上出错

Jos*_*ick 19 iphone objective-c uiview mainwindow

我正在尝试将我的iPhone应用程序转换为通用应用程序.我将设备切换到Universal并让Xcode为我做了一个MainWindow-iPad.xib的事情,现在当我在iPhone模拟器中运行应用程序时,它工作正常,但是当我在iPad模拟器中运行它时,我得到一个白色屏幕和Application windows are expected to have a root view controller at the end of application launch错误.我已经阅读了一些关于同样问题的其他帖子,但没有一个仅限于一个设备.

这是我的application:didFinishLaunchWithOptions:方法:

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

 /* some dropbox setup stuff */


// INIT VIEW AND CORE DATA
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];

NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
    // Handle the error.
}

rootViewController.managedObjectContext = context;

UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;

[_window addSubview:[_navigationController view]];
[_window makeKeyAndVisible];

[rootViewController release];
[aNavigationController release];

return YES;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我只有一个根视图控制器,大小适合iPhone称为RootViewController.但它应该仍然加载不应该吗?或者如果它不应该如何为iPad创建一个?

小智 52

更改以下行:

[_window addSubview:[_navigationController view]];
Run Code Online (Sandbox Code Playgroud)

至:

_window.rootViewController = _navigationController;
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要iOS 3兼容性:

if ([_window respondsToSelector:@selector(setRootViewController:)]) {
    _window.rootViewController = _navigationController;
} else {
    [_window addSubview:_navigationController.view];
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

40195 次

最近记录:

13 年,3 月 前