0

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

当我切换到横向时,视图没有改变,我得到了

“应用程序试图在目标上呈现一个零模式视图控制器”

` 调试器中的错误。我检查了风景故事板是否引用了 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。横向布局的视图控制器称为 CalculatorViewControllerLandscape。

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

4

2 回答 2

3

这意味着landscapeViewControllernil

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

  • landscapeStoryboard存在(很可能是因为找不到nil名为的故事板)LandscapeStoryboard
  • 情节提要中没有指示初始视图控制器。
于 2013-08-27T09:40:50.833 回答
0

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

于 2013-08-27T10:36:44.830 回答