gpt4 book ai didi

ios - 旋转 UISplitViewController 后模态消失

转载 作者:可可西里 更新时间:2023-11-01 04:47:28 24 4
gpt4 key购买 nike

我有一个奇怪的问题 UISplitViewController。我的主视图 Controller 中有一个按钮,它在点击时打开一个模态视图(使用简单的 Storyboard segue)。

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

如果我处于横向(当主视图始终可见时)并打开我的模态,旋转设备会正常工作并且我的模态会停留在屏幕上。

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

最佳答案

不幸的是,当你的 ipad 处于纵向模式时,你有一个你的主人的弹出窗口,它不是另一个形状的主人。这意味着您正在使用此弹出窗口作为 presentingViewController 呈现模式,因此当您从纵向移动到横向时,方法 splitViewController:willShowViewController 将使您的弹出窗口为 nil,如您所见:

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

因此,很遗憾,没有解决方案,您将不得不通过代码执行操作。

希望对你有帮助

罗伯托

关于ios - 旋转 UISplitViewController 后模态消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com