我无法通过推送显示ViewController。我有此代码,目前可以正常工作。但是我需要更改它才能推动。我尝试使用 self.navigationController?.pushViewController(slideMenuController,animation:true),但这对我不起作用。
func navToRecord() {
let mainViewController = kMainStoryboard.instantiateViewController(withIdentifier: "NQTPrivateOfficeViewController") as! NQTPrivateOfficeViewController
let leftViewController = kMainStoryboard.instantiateViewController(withIdentifier: "NQTLeftViewController") as! NQTLeftViewController
let nc = odrexNavigation(rootViewController: mainViewController)
let slideMenuController = EVTSlideMenuController(mainViewController: nc, leftMenuViewController: leftViewController)
slideMenuController.automaticallyAdjustsScrollViewInsets = true
mainViewController.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("Завершить", comment: "finishOdrex"), style: .plain, target: self, action: #selector(action))
self.present(slideMenuController, animated: true, completion: nil)
UIApplication.shared.keyWindow?.makeKeyAndVisible()
}
答案 0 :(得分:1)
您可以尝试
let nav = UINavigationController(rootViewController: self)
UIApplication.shared.keyWindow?.rootViewController = nav
nav.pushViewController(slideMenuController, animated: true)
顺便说一句,不要期望这行
self.navigationController?.pushViewController(slideMenuController, animated: true)
如果在其中执行的VC没有包装在navigationController内,则即可运行,因为 self.navigationController?将为 nil
答案 1 :(得分:0)
推送转换用于将视图控制器推送到导航控制器的堆栈上。如果运行代码的视图控制器不在导航堆栈上,则self.navigationController
将为nil,因此可选的链接调用self.navigationController?.pushViewController()
将失败并且该行将被忽略。
您需要重构情节提要,以便将视图控制器嵌入到导航控制器中。 (我记得在“界面”构建器中有一个“嵌入>导航控制器”菜单项,它将更改您的情节提要,以便所选的视图控制器是导航控制器的根视图控制器。)
答案 2 :(得分:0)
self.nc.pushViewController(slideMenuController,动画:true)