首页 > 解决方案 > 是否可以观察presentingViewController的变化?

问题描述

Swift 中是否有任何等价物RACObserve(self, presentingViewController)

或者任何其他为什么要模仿这种行为?

标签: swiftuiviewcontroller

解决方案


据我了解您的问题:您需要知道现在呈现的是哪个视图控制器,并且您需要在viewDidAppear/viewDidDisappear.

所以我们可以通过几种方式得到这个。

简单的方法是:

  1. 获取当前哪个是顶级 ViewController 的信息。

2.在您的viewDidAppear/viewDidDisappear Like this 中调用此方法:

获取哪个是顶级 ViewController

func getTopViewController() -> UIViewController? {

        if var topVC = UIApplication.shared.keyWindow?.rootViewController {

            while let presentedViewController = topVC.presentedViewController {
                topVC = presentedViewController
                return topVC
            }
            return topVC
        }

        return nil
    }

在 viewDidAppear 中调用:

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        if let top = getTopViewController() {
            print("topView Controller name \(top.title)")
            top.view.backgroundColor = .red
        }
    }

希望它会帮助你!


推荐阅读