【问题标题】:iOS pushViewController not navigating to controller in Swift5iOS pushViewController 没有导航到 Swift5 中的控制器
【发布时间】:2019-05-23 14:19:49
【问题描述】:

我在 Swift5 中使用 pushViewController 时遇到问题,我在 StackOverflow 中搜索了答案,但找不到任何可行的答案。

我要做的只是使用 pushViewController 导航到另一个控制器。

使用 self.present 对 Navigation 有效,但 pushViewController 不起作用,原因我不知道。

仅使用以下当前作品:

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = 
    storyBoard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
self.present(viewController, animated: true, completion: nil)

但是使用 pushViewController 永远不会起作用:

我试过这个:我不工作

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
navigationController?.pushViewController(vc, animated: true)

我试过这个:我也不工作

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController" )
var navigationController = UIApplication.shared.keyWindow?.rootViewController as! UINavigationController
navigationController.pushViewController(viewController, animated: true)

我试过了,还是不行

let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController" )
let vc = self.windowRootViewController() as! ViewController
let nvc = vc.parent as! UINavigationController
nvc.pushViewController(viewController, animated: true)

请有人正确指导我做错了什么,或者我需要做的清单或配置才能正常工作吗?

谢谢大家!

【问题讨论】:

  • 你在哪里调用这个代码?这是在导航控制器中的视图控制器中吗?您似乎没有导航控制器作为父级。
  • 是的,我要导航到的 ViewController 有一个导航控制器。

标签: ios uinavigationcontroller


【解决方案1】:

在代码中设置断点并检查navigationController 是否不为零。如果为 nil,pushViewController 将不起作用。

由于您能够呈现 viewController,因此使用“ViewController”实例化它应该不是问题。

【讨论】:

    【解决方案2】:

    尝试推送的ViewController必须嵌入到NavigationController中。

    假设您有两个 ViewController - ViewControllerAViewControllerB。 为了从ViewControllerA 推送ViewControllerBViewControllerA 必须嵌入NavigationController。 这样您就可以将ViewControllerB 推送到导航堆栈。

    如果ViewControllerA 没有嵌入到NavigationController 中,它的navigationController 属性将为nil。所以你将无法推送ViewControllerB

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 2013-02-11
      • 2012-08-30
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多