首页 > 解决方案 > 嵌入到导航控制器时从视图控制器访问方法

问题描述

我有两个视图控制器 AVC 和 BVC ,我正在用 CustomTransition 动画呈现模态 BVC。我需要从 AVC 访问方法“myMethod()”。这是问题所在的代码部分:

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 中时,这不再起作用了。我该怎么做才能让它发挥作用?

非常感谢

标签: swiftuinavigationcontroller

解决方案


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


推荐阅读