iOS检查ViewController实例是否打开并切换ViewControllers

时间:2014-02-01 22:39:20

标签: ios uiviewcontroller uinavigationcontroller

我有一个带有嵌入式NavigationController的基本ViewController来提供ToolBar。 ToolBar有三个按钮,用于通过segue调用ViewControllers来显示数据。

enter image description here

逐位显示和解除每个数据ViewController是没有问题的,但我想在呈现ViewControllers的所有三个数据之间切换,但不会多次解除和重新打开ViewControllers。

  1. 在VC1-3之间切换时如何保持ViewController 1 - 3打开?
  2. 如何知道呈现ViewController(VC1-3)的数据是否已打开?
  3. 当VC1,VC2或VC3被解除以返回基本ViewController时,如何解除所有打开的ViewControllers(VC1-3)?
  4. 基本ViewController是TabBarController的一部分。所以,我不想为VC1创建另一个 - 3.我的目标是使用按钮在VC1,2和3之间切换,但我不知道如何启动。我试图使用:

    找到打开的ViewController
    ViewController1 *presenter = [(UITabBarController *)self.presentingViewController viewControllers][0];
    

    但它只是告诉我NavigationController是呈现的ViewController。但是没有办法要求NavigationController打开的ViewControllers。有什么想法吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我想我终于明白你在做什么了。您有一个带工具栏的基本视图控制器。单击工具栏上的三个按钮中的任何一个将显示三个视图控制器之一。这些视图控制器还显示一个工具栏,允许您在这三个视图控制器之间切换,但您希望这些视图控制器在用户在它们之间切换时保持不变。用户完成后,可以单击导航栏上的后退按钮弹出所有这些视图控制器并返回基本视图控制器。是吗?

子视图控制器是否需要使用工具栏而不是UITabBarControllerUITabBarController将为您保留对所有三个视图控制器的引用,您不必在它们之间进行切换。例如,基本视图控制器仍然可以有三个按钮,按钮将pushViewController:animated:一个带有三个视图控制器的新UITabBarController,并且它还会根据按下的按钮选择所选的视图控制器。这可能会让事情变得更容易。

我提出这个的原因是我认为尝试使用导航控制器在这三个VC之间进行切换并不是导航控制器的正确用法。像这样的片段意味着传达这些VC之间的等级关系,但它们看起来像兄弟姐妹而不是彼此的孩子。