我有一个简单的单一视图应用程序,其中两个故事板具有不同的纵向和横向布局。横向布局完全不同,这就是我使用第二个故事板的原因。
当我切换到横向时,视图不会改变,我得到
“应用程序尝试在目标上显示nil模态视图控制器”
`调试器中的错误。我已经检查了横向故事板是否引用了CalculatorViewController类。
这是产生错误的代码行:
[self presentViewController:landscapeViewController animated:YES completion:nil];
这是CalculatorViewController.m的整个方法:
- (void)orientationChanged:(NSNotification *)notification
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) &&
!isShowingLandscapeView)
{
// code here to show landscape storyboard
UIStoryboard *landscapeStoryboard = [UIStoryboard storyboardWithName:@"LandscapeStoryboard" bundle:nil];
CalculatorViewControllerLandscape *landscapeViewController = [landscapeStoryboard instantiateInitialViewController];
[self presentViewController:landscapeViewController animated:YES completion:nil];
isShowingLandscapeView = YES;
}
else if (UIDeviceOrientationIsPortrait(deviceOrientation) &&
isShowingLandscapeView)
{
[self dismissViewControllerAnimated:YES completion:nil];
isShowingLandscapeView = NO;
}
}
初始视图控制器称为CalculatorViewController。 横向布局的View Controller称为CalculatorViewControllerLandscape。
这是我的第一个应用程序,所以我非常感谢任何帮助。我试图找到类似问题的解决方案但没有成功。
答案 0 :(得分:2)
这意味着landscapeViewController
为nil
。
这可能是由以下原因引起的:
landscapeStoryboard
为nil
(很可能是因为无法找到名为LandscapeStoryboard
的故事板)答案 1 :(得分:0)
您需要确保故事板横向视图的标识符设置为“LandscapeStoryboard”。选择故事板并检查标识符。