一个View Objective C的不同View Controller

时间:2013-11-07 13:09:45

标签: ios containers viewcontroller

在我的应用程序中,我有一个复杂的视图,其中包含:
核心图表
集合视图(由核心数据控制)
和其他一些观点,(由核心数据控制的不同要求)
集合视图中的项目可以复制拖动到核心图中 我认为拥有多个视图控制器会更好更容易:
Core Plot的一个控制器,一个用于集合视图,以此类推。因为如果我只有一个视图控制器来控制所有这些项目,那么它将是一个包含大量代码并且结构不合理的巨大文件。
我可以使用Container来解决这个问题吗?或者更好地坚持使用巨大的ViewController文件?还是有其他解决方案吗?如果是,可以在故事板中完成此解决方案吗?

2 个答案:

答案 0 :(得分:3)

Container View Controller似乎非常适合你想要的东西:

所有步骤都列在上面的链接中,但要简短:
- 使用[self addChildViewController:childVC]
将子视图控制器添加到容器中 - 然后设置容器[self.view addSubview:childVC.view]的视图 - 然后告诉子视图控制器它在[childVC didMoveToParentViewController:self]

的容器中设置

然后,如果要切换到新的子视图控制器:
- 调用[self addChildViewController:newVC][source willMoveToParentViewController:nil],以便容器知道您要切换子视图控制器。
- 然后用:

进行转换
[self transitionFromViewController:oldVC toViewController:newVC  
                          duration:/*you duration*/ 
                           options:/*your options*/ 
                        animations:/*your animations*/   
                        completion:/*your completion*/] 
  • 并在结束时致电[oldVC removeFromParentViewController][newVC didMoveToParentViewController:self]让容器知道切换已完成。

希望有所帮助。

答案 1 :(得分:1)

您可以为视图配置不同的视图控制器。但是,你必须尝试这个黑客,因为你想在一个场景上同时呈现所有视图控制器的内容。
容器视图控制器是视图控制器,它呈现其子视图控制器的内容。但是,容器视图一次只显示一个孩子。因此,您必须创建一个视图控制器并添加任意数量的视图控制器容器视图。我附上了一张快照。snapshot

希望这有帮助!

在故事板中实现这一目标的步骤: 1)在IB中选择一个视图控制器 2)从IB添加容器视图以查看视图控制器的层次结构 3)您只需删除它并连接所需的视图控制器即可更改容器视图的子项 4)两个容器视图的子项都没有在故事板中显示任何代码。

为了初始化您的视图控制器和授权黑白,我强烈建议您查看View Controller Programming guide中的示例代码