应用程序尝试在目标上显示nil模态视图控制器

时间:2013-08-27 09:38:35

标签: ios xcode

我有一个简单的单一视图应用程序,其中两个故事板具有不同的纵向和横向布局。横向布局完全不同,这就是我使用第二个故事板的原因。

当我切换到横向时,视图不会改变,我得到

  

“应用程序尝试在目标上显示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。

这是我的第一个应用程序,所以我非常感谢任何帮助。我试图找到类似问题的解决方案但没有成功。

2 个答案:

答案 0 :(得分:2)

这意味着landscapeViewControllernil

这可能是由以下原因引起的:

  • landscapeStoryboardnil(很可能是因为无法找到名为LandscapeStoryboard的故事板)
  • 故事板中没有显示初始视图控制器。

答案 1 :(得分:0)

您需要确保故事板横向视图的标识符设置为“LandscapeStoryboard”。选择故事板并检查标识符。