视图控制器不会推送

时间:2019-01-27 03:42:57

标签: swift uiviewcontroller viewcontroller

我的应用程序委托中有一个函数,当从Siri快捷方式调用时,该函数应该推入View Controller。

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)
            }
        }
    }
}

当我从AppDelegate调用pushNewView()时,什么都没有发生。

如果我提供视图控制器而不是推送视图控制器,那确实可行,但我希望推送视图控制器。

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

有人知道如何使此功能成功推送视图控制器吗?

1 个答案:

答案 0 :(得分:1)

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

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

您需要执行以下两项操作之一。重做您的设置,以将alreadySomeOneThererootViewController嵌入导航控制器中,或者您需要从alreadySomeOneThererootViewController展示新的视图控制器。

请注意,您不能按导航控制器。如果您选择将alreadySomeOneThererootViewController放在导航控制器中,则只需按viewToPush。不要创建其他导航控制器。

如果您决定从alreadySomeOneThererootViewController展示新的视图控制器,则根据viewToPush的需要,您可能需要也可能不需要嵌入viewToPush它自己的导航控制器。