在swift中以编程方式导航viewcontroller

在swift中以编程方式导航viewcontroller,swift,Swift,我想展示一个名为BaseViewController的视图控制器,它应该具有导航功能,以便我可以从BaseViewController进行导航。我已经尝试了以下代码,但没有帮助 @IBAction func presentBaseViewControllerButtonAction(sender: AnyObject) { let baseViewController = getViewControllerInstance("Base", storyboardId: "BaseView

我想展示一个名为BaseViewController的视图控制器,它应该具有导航功能,以便我可以从BaseViewController进行导航。我已经尝试了以下代码,但没有帮助

@IBAction func presentBaseViewControllerButtonAction(sender: AnyObject) {

    let baseViewController = getViewControllerInstance("Base", storyboardId: "BaseViewControllerID") as! PostServiceViewController

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds) //error this viewcontroller has no member window
    var navigationController = UINavigationController()
    var mainView = baseViewController(nibName: nil, bundle: nil) 
    navigationController.viewControllers = [mainView]
    self.window!.rootViewController = navigationController
    self.window?.makeKeyAndVisible()

    self.presentViewController(baseViewController, animated: true, completion: nil)
}
我找到了答案。如果有人还在为此奋斗,就在这里

let navigationController=UINavigationController(rootViewController:setupController)
navigationController.navigationBarHidden=true
self.presentViewController(navigationController,动画:true,完成:nil)

试试这个

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var nav = UINavigationController()
var mainView = ViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
nav.viewControllers = [mainView]
self.window!.rootViewController = nav
self.window?.makeKeyAndVisible()
试试这个

let baseViewController = getViewControllerInstance("Base", storyboardId: "BaseViewControllerID") as! PostServiceViewController
let nav = UINavigationController(rootViewController: baseViewController!)
self.window?.rootViewController = nav

您需要将情节提要id设置为ViewController名称

    let next = self.storyboard?.instantiateViewControllerWithIdentifier("DashboardController") as! DashboardController
    self.presentViewController(next, animated: true, completion: nil)

这和我上面所做的一样。我得到了答案,我在上面编辑了需要的部分。你可以直接从stoyboard嵌入导航控制器,而不是通过编程。是的,但我必须通过编程来实现。谢谢,但我们不能在viewController中使用self.window,而是在应用程序中使用代理。而且,有人建议我使用代码,你可以在这里看到我的问题的编辑版本。非常感谢。不,实际上我在AppDelegate.swift中测试了它,所以我忘了更改它。如果您不允许用户从BaseViewController返回,那么我认为您必须更改根视图控制器,而不是presentViewController。因为在当前的视图控制器中,它不会释放旧视图控制器的内存。这段代码对我来说很好让navigationController=UINavigationController(rootViewController:setupController)navigationController.navigationBarHidden=true self.presentViewController(navigationController,动画:true,完成:nil)'