在SWIFT

时间:2015-10-24 03:56:52

标签: ios swift uitableview uiviewcontroller uinavigationcontroller

我在堆栈溢出社区中阅读了很多关于在不同ViewControllers之间切换的问题/答案,但我找不到针对我的具体问题的正确答案。

  1. 我正在使用NavigationViewController“连接”我所有不同的viewControllers(ViewController / TableViewController / CollectionViewController)

  2. 我有一些不依赖于ViewController类的类。例如,计算我的“计算”类中的任何内容。

  3. 我正在寻找一个简单的解决方案,在所有ViewControllers之间切换。我想在我的“计算”课程中做出决定,例如在导航ViewController中退后一步。

    在我使用它的那一刻:

    1. 在两个不同的ViewController之间切换的示例:

      let sb = UIStoryboard(name: "Main", bundle: nil)
      let vc = sb.instantiateViewControllerWithIdentifier("StartPage") as! StartPageView
      self.presentViewController(vc, animated: true, completion: nil)
      
    2. 问题:此示例仅适用于ViewController类,导航栏消失。

      1. 在我的NavigationViewController中退后一步的示例:

        self.navigationController?.popViewControllerAnimated(true)
        
      2. 问题:此示例仅适用于ViewController类。

        编辑1:

        我找到了一个很好的解决方案,用这部分代码调用我的所有viewControllers:

            let switchViewController = self.navigationController?.viewControllers[1] as! ScanTableView
            self.navigationController?.popToViewController(switchViewController, animated: true)
        

        如何在非ViewController类中调用此代码?

1 个答案:

答案 0 :(得分:1)

将新视图控制器推送到现有导航堆栈,而不是以模态方式呈现:

let vc = self.storyboard!.instantiateViewControllerWithIdentifier("StartPage") as! StartPageView
self.navigationController!.pushViewController(vc, animated: true)