首页 > 解决方案 > 视图控制器不会推送

问题描述

我的应用程序委托中有一个函数,它应该在从 Siri 快捷方式调用时推送视图控制器。

func pushNewView() {
    if let wind = UIApplication.shared.delegate?.window {
        if let rootViewController = wind?.rootViewController {
            let viewToPush = TripTableViewController()
            if let alreadySomeOneThere = rootViewController.presentedViewController {
                alreadySomeOneThere.navigationController?.pushViewController(viewToPush, animated: true)
            } else {
                rootViewController.navigationController?.pushViewController(viewToPush, animated: true)
            }
        }
    }
}

当我pushNewView()从我的 AppDelegate 调用时,没有任何反应。

如果我呈现视图控制器而不是推送它,那确实有效,但我希望推送视图控制器。

我没有使用任何故事板,我所有的代码都是程序化的。

有谁知道如何使这个功能成功推送视图控制器?

标签: swiftuiviewcontrollerviewcontroller

解决方案


什么都没有发生,因为既没有alreadySomeOneThere也没有rootViewController嵌入到导航控制器中。

为了推送另一个视图控制器,需要有一个现有的导航控制器。

你需要做两件事之一。要么重做你的设置,将alreadySomeOneThererootViewController嵌入到导航控制器中,要么你需要从alreadySomeOneThere或展示新的视图控制器rootViewController

请注意,您不能推送导航控制器。如果您选择将alreadySomeOneThereandrootViewController放入导航控制器,则只需按下viewToPush. 不要创建另一个导航控制器。

如果您决定从alreadySomeOneThere或呈现新的视图控制器rootViewController,那么根据 的需要viewToPush,您可能需要也可能不需要viewToPush嵌入它自己的导航控制器。


推荐阅读