我试图使用:
self.navigationController?.setViewControllers([anotherNavController], animated: true)
但是,我得到NSException
。我假设您不能在另一个中使用UINavigationController
,因为使用setViewControllers()
和普通的视图控制器可以正常工作。
我只需要关闭当前的navigationController并显示另一个navigationController,这样当新的navigationController被解除时,将来旧的navigationController不会重新出现。
我正在使用 PageMenu ,这使事情变得复杂。
我需要更换整个导航控制器的原因示例:
此代码初始化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)
答案 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。