iOS 7 覆​​盖 CurrentContext 模态呈现

iOS 7 overrides CurrentContext modal presentation

我有一个非常标准的视图层次结构,主要是 UITabBarController 包含几个 UINavigationController

我正在创建一个新的 UINavigationController 并在其中一个选项卡中以模式方式呈现它。

我想让它显示 UIModalPresentationCurrentContext,所以我这样设置:

[newNavCon setModalPresentationStyle:UIModalPresentationCurrentContext];

然后,我这样呈现:

[oldNavCon presentViewController:newNavCon animated:YES completion:nil];

但是当它出现时,它是全屏的,而不是我设置的当前上下文。

当我查看断点时,newNavCon 上的模式呈现样式在 presentViewController 之后立即更改为 UIModalPresentationFullScreen

真正让我感到困惑的是这种行为发生在iOS7。它在 iOS 8-10 上完全按照预期工作。

为什么会这样?在 iOS7 上有什么我不知道的特殊怪癖吗?为什么演示文稿样式会像这样被覆盖?

编辑: 澄清一下,这是我正在使用的视图层次结构:

我猜您是在 iPhone 设备或​​模拟器上进行测试。在 iOS 7 及之前,UIModalPresentationCurrentContext 是一个 iPad-only 特征。