我有一个奇怪的问题 UISplitViewController。我的主视图控制器中有一个按钮,点击时会打开一个模式视图(使用简单的故事板转场)。
但是,当我旋转 iPad 时,模式视图会消失,但仅限于从纵向旋转到横向时。我的主视图控制器以纵向隐藏,就像在本机邮件应用程序中一样。
如果我处于横向模式(当主模式始终可见时)并打开我的模式,则旋转设备可以正常工作,并且我的模式保留在屏幕上。
我尝试以编程方式手动触发 segue,如果我调用performSegueWithIdentifier:
在 splitViewController 上,旋转是双向的。但我想知道这是否可以通过一种更简单的方式修复,因为我在主视图控制器中还有其他显示模态的按钮,并且我不想为每个按钮执行 IB 操作并失去故事板转场的优势。
不幸的是,当你的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,但不会将其删除,因此您的模式始终处于连接状态。
因此,不幸的是没有解决方案,您必须通过代码执行操作。
我希望它有帮助,
Roberto
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)