【问题标题】:Change order in Navigation Controller导航控制器中的更改顺序
【发布时间】:2017-01-27 09:06:49
【问题描述】:

我正在使用 Swift3。如图所示,我有一个带有 VC 的应用程序。

在 Mainmenu-VC 中,用户触发 Input-segue。用户在 Input-VC 中输入名字。这会触发 Select-segue 到 Select-VC 以选择姓氏并触发 Selected-segue 到 Details-VC。

用户还可以从 Mainmenu-VC 访问 Details-VC。通过 NavigationControllerMechanism 返回到 Mainmenu-VC。

我想更改 NavigationControllerMechanism 'history',这样当用户通过 Selected-segue 从 Details-VC 进入时,之前的 VC 会从 Select-VC 更改为 Mainmenu-VC。 所以基本上在Details-VC中,Back总是返回Mainmenu-VC。

我尝试结合网络上的各种解决方案,但没有成功。 这可能吗?

【问题讨论】:

    标签: ios uiviewcontroller uinavigationcontroller swift3


    【解决方案1】:

    是的。

    View-Controller 堆栈存储在 currentViewController.navigationController?.viewControllers 中。

    所以你应该做这样的事情:

    //In Your Details VC :
    
    override func viewDidAppear(_ animated: Bool) {
    
        super.viewDidAppear(animated)
        guard let stack = self.navigationController?.viewControllers else { return }
        //get the mainMenu VC 
        let mainVC = stack.first!
        // Rearrange your stack
        self.navigationController?.viewControllers = [mainVC, self]
    
        //Now you can press "bac" to Main VC
    
    }
    

    【讨论】:

    • CZ54 - 你能详细说明你的代码是如何工作的吗?我的意思是系统将如何工作。
    【解决方案2】:

    您想以这种方式更改导航堆栈,您可以操作

    let myprofile = storyboard.instantiateViewController(withIdentifier: "Profile1ViewController") as! Profile1ViewController
       let sourseStack = self.navigationController!.viewControllers[0];
           var controllerStack = self.navigationController?.viewControllers
    
            let index = controllerStack!.index(of: sourseStack);
            controllerStack![index!] = myprofile
    
            self.navigationController!.setViewControllers(controllerStack!, animated: false);
    

    转到 RootViewController

     dispatch_async(dispatch_get_main_queue(), {
                        self.navigationController?.popToRootViewControllerAnimated(true)
                    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多