iOS 7会覆盖CurrentContext模式演示文稿

时间:2017-01-30 01:40:27

标签: objective-c ios7 uimodalpresentationstyle

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

我正在创建一个新的UINavigationController并从其中一个标签中以模态方式显示它。

我希望它与UIModalPresentationCurrentContext显示,所以我设置它是这样的:

[newNavCon setModalPresentationStyle:UIModalPresentationCurrentContext];

然后,我这样呈现:

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

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

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

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

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

修改: 为了澄清,这是我正在使用的视图层次结构:

  • UIViewController(作为容器,全屏)
  • UITabBarController(不是全屏,由容器控制)
    • definesPresentationContext
  • UINavigationController(作为标签根,显示模态窗口)
    • definesPresentationContext
  • UINavigationController(由上述UIViewController以模态方式呈现)
    • modalPresentationStyle = UIModalPresentationCurrentContext
  • UIViewController

1 个答案:

答案 0 :(得分:0)

我猜测你正在iPhone设备或模拟器上进行测试。在iOS 7及之前,UIModalPresentationCurrentContext仅限iPad 功能。