【问题标题】:UIViewController is covered by another fullscreen view controller, but not removed from the hierarchyUIViewController 被另一个全屏视图控制器覆盖,但没有从层次结构中删除
【发布时间】:2017-06-14 18:57:51
【问题描述】:

参与者

  • AC 是具有纯色背景的视图控制器。默认设置没有任何变化。
  • B 是一个具有半透明背景的视图控制器。它应该覆盖它所呈现的视图控制器的一部分。 ModalPresentation 样式为overFullScreen

短篇小说A 呈现BB 呈现CviewWillDisappear 永远不会被 A 调用

长篇大论

  • A 在屏幕上
  • A 呈现 B 并拨打以下电话:self.present(B, animated: true)
  • AB 在屏幕上都可见。 AviewWillDisappear 方法调用,这是预期的,因为它仍然可见
  • B 提出 C 并拨打以下电话:self.present(C, animated: true)
  • C 出现在屏幕上,涵盖了一切,它的演示模式是fullscreen
  • B 已从视图层次结构中移除。调用BviewWillDisappear方法
  • 检查视图层次结构我可以看到A 仍然存在,并且从未在A 上调用viewWillDisappear,但它也不可见,因为它被全屏视图控制器覆盖。

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

是 UIKit 的 bug 还是我做错了?

【问题讨论】:

    标签: ios uikit


    【解决方案1】:

    Per the documentation,这是UIModalPresentationStyle.overFullScreen 的预期行为。另一种风格——.fullScreen——似乎更接近你想要的行为。

    【讨论】:

    • 呈现 A (.fullScreen) -> B (.overFullscreen, 我希望此时部分覆盖 A) -> C (.fullScreen) 导致 A -> C 在层次结构中。 B 按预期删除,但为什么 A 没有被删除,因为它也被 .fullScreen 视图控制器覆盖?
    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多