在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)
请问有人可以正确地指导我做错什么或需要做的清单或配置吗?
谢谢大家!
答案 0 :(得分:0)
在代码中设置断点,并检查navigationController
是否不为零。如果为零,则pushViewController
将不起作用。
由于您能够显示viewController,因此使用“ ViewController
”实例化它应该不是问题。
答案 1 :(得分:0)
尝试推送的ViewController
必须嵌入NavigationController
中。
假设您有两个ViewController-ViewControllerA
和ViewControllerB
。
为了将ViewControllerB
从ViewControllerA
推入,ViewControllerA
必须嵌入到NavigationController
中。
这样您就可以将ViewControllerB
推入导航堆栈。
如果ViewControllerA
中没有嵌入NavigationController
,则它的 navigationController 属性将为 nil 。因此,您将无法按下ViewControllerB
。