UIViewController上的apple documentation dismiss(animated:completion :)说


  呈现视图控制器负责消除视图
  它提出的控制器。如果在显示的视图上调用此方法
  控制器本身,UIKit要求呈现视图控制器进行处理
  解雇。


但是当我覆盖演示控制器的解雇时

override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil)


它不被称为

ViewController1->现在的ViewController2

从ViewController2调用ViewController2.dismiss-> dismiss,不调用ViewController1。(override)dismiss

最佳答案

根据present(_:animated:completion:)的文档:


  您在其上调用此方法的对象可能并不总是一个
  处理演示文稿。每种演示样式都有不同
  规范其行为的规则。例如,全屏演示
  必须由本身涵盖整个
  屏幕。如果当前的视图控制器无法满足请求,
  它将请求沿视图控制器层次结构转发到其
  最近的父级,然后可以处理或转发该请求。


如果是iPhone(水平紧凑的环境),则默认情况下使用全屏模式。因此,此处ViewController1可能不是'presentingViewController'。

关于ios - UIViewController.dismiss()不调用presentingViewController.dismiss(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48386582/

10-14 23:36