Apple 的视图控制器编程指南状态(强调添加):
调用 presentViewController:animated:completion: 方法的视图控制器可能不是真正执行模态呈现的视图控制器。呈现风格决定了视图控制器的呈现方式,包括呈现视图控制器所需的特征。例如,全屏演示必须由全屏视图控制器启动。如果当前呈现的视图控制器不合适,UIKit 会遍历视图控制器层次结构,直到找到合适的。完成模态演示后,UIKit 会更新受影响视图控制器的 presentingViewController 和presentedViewController 属性。
我正在尝试使用 UIPresentationController 子类实现自定义视图控制器演示。当我展示我的视图控制器时:
let sb = UIStoryboard.init(name:"Main", bundle:nil)
let presented = sb.instantiateViewController(withIdentifier:"PresentedTableViewController")
presented.transitioningDelegate = overlayTransitioningDelegate
presented.modalPresentationStyle = .custom
definesPresentationContext = true
present(presented, animated:true, completion:nil)
...该presentingViewController
属性是指层次结构中比启动演示的视图控制器更高的视图控制器。这对我说,我没有满足UIModalPresentationStyle.custom
它呈现视图控制器的任何神秘要求,所以它去别处寻找。
问题是,我在任何地方都找不到这些要求,也无法弄清楚。我需要在我的演示控制器中引用启动视图控制器。而且,好吧,我可以通过自己提供参考来完全回避这个问题,但我更愿意以正确的方式做事,而不是围绕我无知的错误编写代码。
有谁知道视图控制器在使用时必须做些什么才能成为呈现视图控制器UIModalPresentationStyle.custom
?谢谢!