2016-06-08 61 views
0

我使用Xib,而不是情节串连图板,在我AppDelegate使用此代码在我的项目进行导航如何在iOS中使用一个项目中的多个UINavgationController使用SWIFT

var nav = UINavigationController() 
let FirstVC = HomeScreenVIewController(nibName: "HomeScreenVIewController", bundle: nil) as HomeScreenVIewController 
nav = UINavigationController(rootViewController: FirstVC) 
nav.navigationBarHidden = true 
self.window?.rootViewController = nav 
self.window?.makeKeyAndVisible()  
nav.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) 

从一个视图导航到另一个在按钮单击我使用此代码

let NextVc = RegistrationStepOneViewController(nibName: "RegistrationStepOneViewController", bundle: nil) as RegistrationStepOneViewController 
appDelegate.nav.pushViewController(NextVc, animated: true) 

此导航将用于所有注册过程步骤。注册完成后,会有一个仪表板屏幕,用户无法回到注册步骤(显然)。

现在我想要从仪表板启动另一个导航,并在应用程序中继续前进。我怎样才能做到这一点 ?

在此先感谢:-)

+0

可能最容易保持一个导航控制器,只是从其'viewControllers'属性数组 – Paulw11

+0

@ Paulw11删除所有以前的条目,你可以请示例 –

回答

1

可以使用setViewControllers:动画:方法来替换你喜欢的任何堆栈中的当前导航堆栈。

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

例如,上面会给你一个新的根控制器,并会炸毁你当前的导航堆栈。在说明这一点之后,我会建议以主视图控制器作为导航VC的根目录启动应用程序,然后呈现(动画:false)注册流程。如果注册已经发生,您只需要在注册完成时将其解散或根本不存在。希望是有道理的!

+0

解释你能指导我关于确切的语法,因为它给我错误。我正在使用swift 2.0 –

0

你可以做这样的事情,

let vc: UIViewController = UIViewController() 
    let view: UIView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)) 
    vc.view = view 
    vc.view.backgroundColor = UIColor.orangeColor() 
    let arr: [UIViewController] = [vc as UIViewController] 
    self.navigationController!.setViewControllers(arr, animated: true) 

您可以设置viewcontrollers阵列导航控制器。您可以将多个数组添加到该arr,并可以使用相同的导航控制器。

相关问题