UIViewController 由另一个全屏视图控制器覆盖,但不会从层次结构中删除



>参与者

  • AC是具有纯色背景的视图控制器。默认设置不会发生任何更改。
  • B是具有半透明背景的视图控制器。它应该覆盖它所呈现的视图控制器的一部分。模态演示风格overFullScreen

短篇小说A呈现BB呈现CviewWillDisappear从不被召唤A

长话短说

  • 屏幕上A
  • AB发出以下电话:self.present(B, animated: true)
  • 屏幕上AB都可见。viewWillDisappearA方法未被调用,这是意料之中的,因为它仍然可见
  • BC发出以下电话:self.present(C, animated: true)
  • C出现在屏幕上,涵盖了所有内容,它的演示模式是fullscreen.
  • B将从视图层次结构中删除。viewWillDisappearB方法称为
  • 检查视图层次结构我可以看到A仍然存在,并且从未在A上调用viewWillDisappear,但它也不可见,因为它被全屏视图控制器覆盖。

我希望AB一起从层次结构中删除,因为如果被视图控制器覆盖fullscreen它们都不可见。

是UIKit的错误还是我做错了?

根据文档,这是UIModalPresentationStyle.overFullScreen的预期行为。另一种风格 -.fullScreen- 似乎更接近你想要的行为。

相关内容

最新更新