【问题标题】:View controller won't push视图控制器不会推送
【发布时间】:2019-01-27 03:42:57
【问题描述】:

我的应用程序委托中有一个函数,它应该在从 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)
            }
        }
    }
}

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

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

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

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

【问题讨论】:

  • 作为你的描述'rootViewController'没有'UINavigationController'作为容器,所以将rootViewController嵌入到navigationController。

标签: swift uiviewcontroller viewcontroller


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 所以活动视图控制器在导航控制器中,我做到了viewToPush 不在导航控制器中,仍然没有任何反应。我已经更新了我的代码。
  • 由于某种原因,我的 rootViewController 的导航控制器等于 nil,即使我将它嵌入到 applicationDidFinishLaunching 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 2010-12-11
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
相关资源
最近更新 更多