我目前正在尝试在我的应用程序中实现一个介绍性(教程)部分,我想给用户在任何时候查看它的选项。我的应用程序的主要部分是由UIViewController XIB文件(ViewController_iPhone.xib,ViewController_iPad.xib)组成的,为了介绍我的观点,我发现使用故事板更容易。因此,在一个简短的总结中:我试图从主ViewController (XIB)切换到故事板中的启动ViewController,这取决于设备类型-> --所有这些都是从UIButton点击开始的。
在我的故事板中,我指定了一个独立的故事板ID,所以不管它是iPad、iPhone还是iPhone-4英寸,它都会加载正确的视图:
故事板ID:3-Slide1 (iPad),4-Slide1 (iPhone),5-Slide1 (iPhone-4英寸)。

以下是ViewController.m:中的按钮代码
NSString *nibName;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
nibName = @"3-Slide1";
} else {
if ([UIScreen mainScreen].bounds.size.height == 480.0) {
nibName = @"4-Slide1";
} else {
nibName = @"5-Slide1";
}
}
IntroViewController *introViewController = [self.storyboard instantiateViewControllerWithIdentifier:nibName];
[self presentViewController:introViewController animated:YES completion:nil];SIGABRT错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Application tried to present a nil modal view controller on target
<ViewController: 0x20865170>.为什么会出现这个错误?
注意:有很多帖子都有相同的SIGABRT错误,但似乎都有不同的问题。
发布于 2013-03-24 21:21:23
为什么有一个从您的视图控制器引导到信息视图控制器,如果您是按它的模式。
我只需为视图控制器制作单独的子格(无论如何,其中一个将位于不同的故事板文件中),命名这些控件并使用您的逻辑来确定正确的segue。然后使用performSegueWithIdentifier:而不是instantiateViewControllerWithIdentifier。
(我猜nib名称实际上是指nib的文件名。不确定,但segue方法无论如何都是正确的方法。)
https://stackoverflow.com/questions/15591540
复制相似问题