嵌入NavigationController时从Viewcontroller访问的方法

时间:2018-09-27 09:37:41

标签: swift uinavigationcontroller

我有两个View控制器AVC和BVC,我以自定义过渡动画的形式呈现BVC。我需要从中访问方法“ myMethod()” AVC。 这是问题所在的代码部分:

enum TransitionType {

case presentation

case dismissal

}


class CustomTransition: NSObject, UIViewControllerAnimatedTransitioning {

var transition: TransitionType = .presentation



func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {


    let fromVC = transitionContext.viewController(forKey: .from)

    let toVC = transitionContext.viewController(forKey: .to)




    // When AVC is embedded in navigationController, I can't access  "myMethod"

    guard let myObject = transition == .presentation ? (fromVC as! AVC).myMethod() : (toVC as! AVC).myMethod() else { return }

    myObject.isHidden = true

    etc...

一切都很好,但是当我将AVC嵌入到navigationController中时,这不再起作用了。 我该怎么做才能使其正常工作?

非常感谢

1 个答案:

答案 0 :(得分:0)

fromVC现在是UINavigationController而不是AVC。要访问后者,您需要使用navigationController?.viewControllers.first进行检索。但是,这假定AVC是嵌入在navigationController对象中的第一个视图控制器。