rde*_*mar 38
容器视图是一个视图,您可以将其拖动到故事板中已有的一个视图控制器中(我们将其称为viewControllerA).您将通过embed segue自动获取连接到此视图的视图控制器.此新视图控制器具有其框架集,因此它与容器视图的大小相同 - 如果您调整容器视图的大小,控制器也将自动调整大小.因此,如果需要,可以将多个容器视图拖入viewControllerA,每个视图都有自己的视图控制器.在代码中,如果需要访问这些嵌入式视图控制器,可以从viewControllerA.childViewControllers访问它们 - 这将为您提供所有嵌入式视图控制器的数组.
在WWDC 2012会话视频视频中讨论了这些容器视图,称为"在您的应用程序中采用故事板".
Cal*_*leb 30
我很困惑为什么以及何时需要使用容器视图?
当人们谈论容器视图时,它们通常只是一个包含其他视图的普通旧UIView.以这种方式使用视图可以将它包含的所有视图作为一个组移动,以便保持它们相对于彼此的位置.它还可以轻松地将所有包含的视图隐藏为一组.
以及如何通过代码实例化容器视图?
通过代码正常实例化UIView的方式相同:
CGRect frame = CGRectMake(someX, someY, someWidth, someHeight);
UIView *container = [[UIView alloc] initWithFrame:frame];
Run Code Online (Sandbox Code Playgroud)
之后,您可能希望向容器添加一些子视图,并最终将容器添加为视图控制器视图的子视图.
另外,请注意我们在讨论视图而不是视图控制器.人们还谈论容器视图控制器,它们意味着可以管理其他视图控制器的视图控制器.UITabBarController,UINavigationController和UISplitViewController是iOS提供的容器视图控制器的示例.如果您愿意,您可以创建自己的,但这是另一个问题的主题.
更新:从您的评论中,您显然想知道故事板编辑器中的"容器视图"项.如果将一个拖入视图,您将看到:
视图本身是用作占位符的UIView.
与视图一起,编辑器创建一个区域,您可以在其中编辑要由子视图控制器管理的内容.见下图.
这不仅仅是一个对象 - 它有几个.你得到一个视图,一个子视图控制器和一个'嵌入'segue.您当然可以自己创建代码并根据需要适当地连接它们.