在我的应用程序中,我有一个复杂的视图,其中包含:
核心图表
集合视图(由核心数据控制)
和其他一些观点,(由核心数据控制的不同要求)
集合视图中的项目可以复制拖动到核心图中
我认为拥有多个视图控制器会更好更容易:
Core Plot的一个控制器,一个用于集合视图,以此类推。因为如果我只有一个视图控制器来控制所有这些项目,那么它将是一个包含大量代码并且结构不合理的巨大文件。
我可以使用Container来解决这个问题吗?或者更好地坚持使用巨大的ViewController文件?还是有其他解决方案吗?如果是,可以在故事板中完成此解决方案吗?
答案 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)
您可以为视图配置不同的视图控制器。但是,你必须尝试这个黑客,因为你想在一个场景上同时呈现所有视图控制器的内容。
容器视图控制器是视图控制器,它呈现其子视图控制器的内容。但是,容器视图一次只显示一个孩子。因此,您必须创建一个视图控制器并添加任意数量的视图控制器容器视图。我附上了一张快照。
希望这有帮助!
在故事板中实现这一目标的步骤: 1)在IB中选择一个视图控制器 2)从IB添加容器视图以查看视图控制器的层次结构 3)您只需删除它并连接所需的视图控制器即可更改容器视图的子项 4)两个容器视图的子项都没有在故事板中显示任何代码。
为了初始化您的视图控制器和授权黑白,我强烈建议您查看View Controller Programming guide中的示例代码