Swift:无法推送以编程方式查看控制器

时间:2018-09-18 14:42:35

标签: swift viewcontroller

我正在尝试使用以下代码以编程方式推送到其他viewcontroller:

let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController") as! MenuController
self.navigationController?.pushViewController(loginVC, animated: true)

这是我的设置:我有一个名为:MenuController的快速文件,其中包含以下代码:我将标识符名称设置为:LoginViewController我将两个ViewControllers的类都设置为{{ 1}}。但是,每当我按下按钮触发事件时,它都不会执行任何操作。

这是我要求的其余代码:

MenuController

我知道代码中的其他所有内容都可以正常工作,因为它可以打印消息。

2 个答案:

答案 0 :(得分:1)

您需要从NavigationController内部插入执行vc的

self.navigationController?

nil或通过编程方式完成

编辑:

替换此

let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController") as! MenuController
self.navigationController?.pushViewController(loginVC, animated: true)

使用

let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController") as! MenuController
let nav = UINavigationController(rootViewController:self) 
(UIApplication.shared.delegate as! AppDelegate).window!.rootViewController = nav 
nav.pushViewController(loginVC, animated: true)

答案 1 :(得分:0)

我认为您的视图控制器不在Navigation Stack中,这就是为什么它没有推送到下一个视图控制器的原因

let nextVC = self.storyboard?.instantiateViewController(withIdentifier: “nextvc”) as! nextvc
let navigation = UINavigationController(rootViewController:self) 
UIAppliaction.window!.rootViewController = navigation  
navigation.pushViewController(nextVC, animated: true)