5

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

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

如果我在横向(当主始终可见时)并打开我的模态,旋转设备正常工作并且我的模态保持在屏幕上。

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

4

1 回答 1

2

不幸的是,当你的 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;
}

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

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

因此,不幸的是,没有解决方案,您将不得不通过代码执行操作..

我希望它有所帮助,

罗伯托

于 2014-02-13T17:07:52.347 回答