推动视图控制器两次

时间:2016-04-25 07:42:47

标签: ios xcode swift

我有3个视图控制器,每个控制器有2个按钮。

第一个观点:

  1. 下一步(转到2视图控制器)
  2. 结束(转到3视图控制器)
  3. 第二种观点:

    1. 返回(转到1视图控制器)
    2. 结束(转到3视图控制器)
    3. 第三种观点:

      1. 返回(转到2视图控制器)
      2. 开始(转到1视图控制器)
      3. 问题在于"返回"第三个视图控制器的按钮:

        self.navigationController?.popViewControllerAnimated(true)
        

        所以当我来自第二个视图时,没有问题,我回到第二个视图,但是当我从第一个视图来到并按下后退按钮时,应用程序返回到第一个视图控制器,我想要导航到第二个视图。

        按下"结束"有没有办法推动2个视图控制器?第一个视图控制器中的按钮,所以当我按下第三个视图控制器中的后退按钮时,它会返回第二个?

        谢谢!

3 个答案:

答案 0 :(得分:2)

您可以多次执行navigationController.pushViewController(viewControllerN, animated: false)来推送多个视图控制器,并仅为最后一个设置animated

答案 1 :(得分:1)

您可以按照以下方式推送两个视图控制器。确保动画:false所以用户无法识别有推两个视图控制器。

 let ObjVC1 = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("StoryBoardID") as! Profile
 self.navigationController?.pushViewController(ObjVC1, animated: false)


 let ObjVC2 = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("StoryBoardID") as! Profile
 self.navigationController?.pushViewController(ObjVC2, animated: true)

答案 2 :(得分:0)

很简单,您可以通过实例化故事板推送多个控制器,如另一个答案所述。

另一种方式是(在客观c中 - 快速转换它),

 NSMutableArray *controllers = [self.navigationController.viewControllers mutableCopy];
 [controllers addObject:secondVc];
 [controllers addObject:thirdVC];
 [self.navigationController setViewControllers:controllers animated:YES];

通过调用self.navigationController.viewControllers,我们获得了一系列导航堆栈。我们可以在这个数组和final中添加或删除对象; y可以通过[self.navigationController setViewControllers:controllers animated:YES];

将此数组设置为navigationcontroller

通过这种方式,您可以管理您的视图层次结构,就像您想要推送三个视图控制器然后您可以轻松地执行,或者如果您想首先推送第一个和第三个,然后将此对象同样添加到数组中,如果您删除特定视图然后从数组中删除该对象。

根据您的需要,我认为这种方法更合适。

希望这会有所帮助:)