Ios 应用程序试图提供一个nil模型视图控制器

Ios 应用程序试图提供一个nil模型视图控制器,ios,uiviewcontroller,uistoryboard,Ios,Uiviewcontroller,Uistoryboard,我目前正在尝试在我的应用程序中实现一个介绍(教程)部分,我想让用户可以随时查看它。我的应用程序的主要部分由UIViewController XIB文件组成(ViewController\u iPhone.XIB,ViewController\u iPad.XIB),出于介绍性视图的目的,我发现使用故事板更容易。因此,在一个简短的总结中:我正在尝试在故事板中从主ViewController(XIB)切换到起始ViewController,具体取决于设备类型->这一切都是从点击UIButton开始的

我目前正在尝试在我的应用程序中实现一个介绍(教程)部分,我想让用户可以随时查看它。我的应用程序的主要部分由UIViewController XIB文件组成(
ViewController\u iPhone.XIB
ViewController\u 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];
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Application tried to present a nil modal view controller on target
<ViewController: 0x20865170>.
SIGABRT错误:

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];
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Application tried to present a nil modal view controller on target
<ViewController: 0x20865170>.
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:
'应用程序试图在目标上呈现无模式视图控制器
.
为什么会出现这种错误


注意:有很多帖子都有相同的一般SIGABRT错误,但似乎都有不同的问题。

如果您以模式推送视图控制器,为什么会有一个从视图控制器到信息视图控制器的序列

我只需对视图控制器进行单独的分段(一个将位于不同的故事板文件中),命名分段并使用您的逻辑确定正确的分段。然后使用
performsguewithidentifier:
而不是
instanceeviewcontrollerwhidentifier


(我猜nib名称实际上是指nib的文件名。不确定,但segue方法无论如何是正确的方法。)

如果您以模式推送它,为什么会有一个segue从视图控制器指向信息视图控制器

我只需对视图控制器进行单独的分段(一个将位于不同的故事板文件中),命名分段并使用您的逻辑确定正确的分段。然后使用
performsguewithidentifier:
而不是
instanceeviewcontrollerwhidentifier


(我猜nib名称实际上是指nib的文件名。不确定,但segue方法无论如何是正确的方法。)

就这一点而言,似乎不应该有多个segue:iPad/iPhone通常在不同的故事板中(每个故事板中可能有相同的segue名称),3.5“/4”iPhone通常不需要不同的目标控制器,只需要智能布局代码/约束。对。如果你需要简单地调整媒体,你可以在控制器中进行调整……就这一点而言,似乎不应该有多个segue:iPad/iPhone通常会在不同的故事板中(每个故事板中可能有相同的segue名称),而3.5“/4”iPhone通常不需要不同的目标控制器,只是智能布局代码/约束。对。如果您需要简单地调整介质,您可以在控制器中进行调整…等等。我刚刚又读了你的第一段。是不是当前视图控制器(带有您显示的代码的控制器,您正试图从中加载此简介)不是从故事板加载的?请稍候。我刚刚又读了你的第一段。是不是当前的视图控制器(带有您显示的代码的控制器,您正试图从中加载此简介)不是从故事板加载的?