Iphone 昨天下载了6.1sdk现在[self.tabBarController presentViewController:…不工作

Iphone 昨天下载了6.1sdk现在[self.tabBarController presentViewController:…不工作,iphone,ios,xcode,Iphone,Ios,Xcode,我升级到x代码4.6 SDK 6.1,现在 [self.tabBarController presentViewController:loginViewController animated:YES completion:nil]; 正在穿线 该代码在6.0及以下模拟器上使用6.0,但现在6.0及6.1崩溃,而5.1及以下模拟器仍然运行良好 基本上,在我的应用程序delecate中,我调用一个选项卡栏,然后在上面运行一个登录屏幕,直到它被取消 编辑:我没有在任何地方使用AutoLayout。

我升级到x代码4.6 SDK 6.1,现在

[self.tabBarController presentViewController:loginViewController animated:YES completion:nil];
正在穿线

该代码在6.0及以下模拟器上使用6.0,但现在6.0及6.1崩溃,而5.1及以下模拟器仍然运行良好

基本上,在我的应用程序delecate中,我调用一个选项卡栏,然后在上面运行一个登录屏幕,直到它被取消


编辑:我没有在任何地方使用AutoLayout。

明白了,我的印象是,在我的xib名称中添加~iPad/~iPhone将有助于通用应用程序选择自动使用哪个xib。在5.1模拟器上,它可以,但在6及更高版本上则不行

下面是正确的代码

LoginViewController *loginViewController;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil];
    viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil];
    loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController~iPhone" bundle:nil];
} else {
    viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil];
    viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil];
    loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController~iPad" bundle:nil];
}