iOS pushViewController无法导航到Swift5中的控制器

时间:2019-05-23 14:19:50

标签: ios uinavigationcontroller

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

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

使用self.present可用于导航,但由于我不知道的原因,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)

请问有人可以正确地指导我做错什么或需要做的清单或配置吗?

谢谢大家!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

如果ViewControllerA中没有嵌入NavigationController,则它的 navigationController 属性将为 nil 。因此,您将无法按下ViewControllerB