首页 > 解决方案 > iOS pushViewController 没有导航到 Swift5 中的控制器

问题描述

我在 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)

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

感谢大家!

标签: iosuinavigationcontroller

解决方案


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

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


推荐阅读