用另一个导航控制器替换当前导航控制器

时间:2016-05-18 19:46:26

标签: ios swift uinavigationcontroller

我试图使用:

self.navigationController?.setViewControllers([anotherNavController], animated: true)

但是,我得到NSException。我假设您不能在另一个中使用UINavigationController,因为使用setViewControllers()和普通的视图控制器可以正常工作。

我只需要关闭当前的navigationController并显示另一个navigationController,这样当新的navigationController被解除时,将来旧的navigationController不会重新出现。

我正在使用 PageMenu ,这使事情变得复杂。

我需要更换整个导航控制器的原因示例:

enter image description here

此代码初始化ViewDidAppear中的PageMenu:

 // Initialize scroll menu
    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)

    self.addChildViewController(pageMenu!)
    self.view.addSubview(pageMenu!.view)

    pageMenu!.didMoveToParentViewController(self)

1 个答案:

答案 0 :(得分:1)

如果您在没有StoryBoard的情况下设置PageMenu,则需要在AppDelegate中实例化rootViewController。这应该摆脱从默认navigationController切换到您自己的需要。

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    self.window?.rootViewController = YourViewController(nibName: "YourViewController", bundle: nil)

    self.window?.makeKeyAndVisible()

    return true
}

有关设置没有StoryBoard的PageMenu的其他帮助,请查看演示代码here