Ale*_*lin 5 objective-c uisplitviewcontroller ios
我有一个奇怪的问题UISplitViewController.我的主视图控制器中有一个按钮,可以在轻敲时打开模态视图(使用简单的故事板segue).
但是当我旋转iPad时,模态视图会消失,但只有在从纵向旋转到横向时才会消失.我的主视图控制器隐藏在纵向中,就像在本机Mail应用程序中一样.
如果我在风景中(当主人总是可见时)并打开我的模态,旋转设备正常工作,我的模态停留在屏幕上.
我尝试以编程方式手动触发segue,如果我调用performSegueWithIdentifier:splitViewController,旋转可以双向工作.但我想知道这是否可以通过更简单的方式解决,因为我在主视图控制器中有其他按钮显示模态,我不想为每个按钮执行IB操作而失去故事板segues的优点.
不幸的是,当你的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;
}
Run Code Online (Sandbox Code Playgroud)
所以我知道你的模态随之而来是可以接受的。因此,这样您就明白为什么当您在 splitViewController 上进行操作调用时,performSegueWithIdentifier:它不会发生,您的模式不再与弹出窗口连接。
所以你可能会问为什么当你从横向移动到纵向时不会发生这种情况..原因是splitViewController:willHideViewController,它隐藏了 viewController 它不会删除它,所以你的模态总是连接的。
因此,不幸的是没有解决方案,您必须通过代码执行操作。
我希望它有帮助,
罗伯托
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |