UIViewController在自定义模式演示中充当presentationViewController需要什么?

时间:2016-08-25 18:34:38

标签: ios uiviewcontroller uipresentationcontroller

Apple的视图控制器编程指南states(强调添加):

  

调用presentViewController的视图控制器:animated:completion:方法可能不是实际执行模式演示的方法。演示样式决定了如何呈现视图控制器,包括呈现视图控制器所需的特性。例如,全屏演示必须由全屏视图控制器启动。如果当前呈现的视图控制器不合适,UIKit将遍历视图控制器层次结构,直到找到它为止。完成模态演示后,UIKit会更新受影响的视图控制器的presentsViewController和presentsViewController属性。

我正在尝试使用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时视图控制器必须做什么才有资格成为呈现视图控制器?谢谢!

0 个答案:

没有答案