旋转UISplitViewController后模态消失

时间:2013-03-26 15:39:09

标签: ios objective-c uisplitviewcontroller

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

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

如果我在风景中(当主人总是可见的时候)并打开我的模态,旋转设备正常工作,我的模态停留在屏幕上。

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

1 个答案:

答案 0 :(得分:1)

不幸的是,就像那样,当你的ipad处于纵向模式时,你有一个主人的弹出窗口,它不是另一种形状的主人。什么意味着你使用这个popover作为presentationViewController呈现一个模态,所以当你从一个纵向移动到另一个横向时,方法splitViewController:willShowViewController将使你的popover为零,你可以看到:

- (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它不会删除它,所以你的模态总是连接的。

所以,遗憾的是没有解决方案,您必须按代码执行操作。

我希望它有所帮助,

罗伯特