【问题标题】:Modal disappearing after rotating UISplitViewController旋转 UISplitViewController 后模态消失
【发布时间】:2013-03-16 11:48:38
【问题描述】:

我有一个奇怪的问题 UISplitViewController。我的主视图控制器中有一个按钮,点击时会打开一个模式视图(使用简单的故事板 segue)。

但是当我旋转 iPad 时,模态视图会消失,但只有在从纵向旋转到横向时才会消失。我的主视图控制器隐藏在纵向中,就像在本机邮件应用程序中一样。

如果我处于横向状态(当主人始终可见时)并打开我的模态,旋转设备可以正常工作,我的模态会留在屏幕上。

我尝试以编程方式手动触发 segue,如果我在 splitViewController 上调用 performSegueWithIdentifier:,则旋转可以双向工作。但我想知道这是否可以以更简单的方式修复,因为我在主视图控制器中还有其他显示模式的按钮,我不想为每个按钮执行 IB 操作而失去故事板转场的优势。

【问题讨论】:

    标签: ios objective-c uisplitviewcontroller


    【解决方案1】:

    不幸的是,当你的 ipad 处于纵向模式时,你的主人有一个弹出框,它不是其他形状的主人。这意味着您正在使用此弹出框作为presentingViewController 来呈现模式,因此当您从纵向移动到横向时,splitViewController:willShowViewController 方法将使您的弹出框为零,如您所见:

    - (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
    {
        // Called when the view is shown again in the split view, invalidating the button and popover controller.
        [self.navigationItem setLeftBarButtonItem:nil animated:YES];
        self.masterPopoverController = nil;
    }
    

    所以我知道您的模态与它一起使用是可以接受的。所以,有了这个你就明白为什么当你在你的 splitViewController 上调用performSegueWithIdentifier: 时它不会发生,你的模态不再与你的弹出窗口连接。

    所以你可能会问为什么当你从横向移动到纵向时它不会发生......原因是splitViewController:willHideViewController,它隐藏了 viewController 它没有删除它,所以你的模态总是连接的。

    所以,很遗憾没有解决方案,您将不得不通过代码执行操作..

    希望对你有帮助

    罗伯托

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      相关资源
      最近更新 更多