Ios 应用程序试图提供一个nil模型视图控制器
我目前正在尝试在我的应用程序中实现一个介绍(教程)部分,我想让用户可以随时查看它。我的应用程序的主要部分由UIViewController XIB文件组成(Ios 应用程序试图提供一个nil模型视图控制器,ios,uiviewcontroller,uistoryboard,Ios,Uiviewcontroller,Uistoryboard,我目前正在尝试在我的应用程序中实现一个介绍(教程)部分,我想让用户可以随时查看它。我的应用程序的主要部分由UIViewController XIB文件组成(ViewController\u iPhone.XIB,ViewController\u iPad.XIB),出于介绍性视图的目的,我发现使用故事板更容易。因此,在一个简短的总结中:我正在尝试在故事板中从主ViewController(XIB)切换到起始ViewController,具体取决于设备类型->这一切都是从点击UIButton开始的
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通常不需要不同的目标控制器,只是智能布局代码/约束。对。如果您需要简单地调整介质,您可以在控制器中进行调整…等等。我刚刚又读了你的第一段。是不是当前视图控制器(带有您显示的代码的控制器,您正试图从中加载此简介)不是从故事板加载的?请稍候。我刚刚又读了你的第一段。是不是当前的视图控制器(带有您显示的代码的控制器,您正试图从中加载此简介)不是从故事板加载的?