我有一个奇怪的问题UISplitViewController。我的主视图控制器中有一个按钮,在点击时打开模态视图(使用简单的故事板segue)。
但是当我旋转iPad时,模态视图会消失,但只有在从纵向旋转到横向时才会消失。我的主视图控制器隐藏在纵向中,就像在本机Mail应用程序中一样。
如果我在风景中(当主人总是可见的时候)并打开我的模态,旋转设备正常工作,我的模态停留在屏幕上。
我尝试以编程方式手动触发segue,如果我在splitViewController上调用performSegueWithIdentifier:
,则旋转可以双向工作。但我想知道这是否可以通过更简单的方式解决,因为我在主视图控制器中有其他按钮显示模态,我不想为每个按钮执行IB操作,并且失去了故事板segues的优点。
答案 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它不会删除它,所以你的模态总是连接的。
所以,遗憾的是没有解决方案,您必须按代码执行操作。
我希望它有所帮助,
罗伯特