【问题标题】:What is Container View in iOS 5 SDK?iOS 5 SDK 中的容器视图是什么?
【发布时间】:2012-11-01 13:03:40
【问题描述】:

我很困惑为什么以及何时需要使用容器视图?我们如何通过代码实例化一个容器视图?

【问题讨论】:

    标签: ios xcode ios5


    【解决方案1】:

    容器视图是一种视图,您可以将其拖入您的情节提要中已有的视图控制器中(我们称之为 viewControllerA)。你会自动获得一个通过嵌入转场连接到该视图的视图控制器。这个新的视图控制器有它的框架集,所以它与容器视图的大小相同——如果你调整容器视图的大小,控制器也会自动调整大小。因此,如果您愿意,可以将多个容器视图拖入 viewControllerA 中,每个视图控制器都有自己的视图控制器。在代码中,如果您需要访问这些嵌入式视图控制器,可以从 viewControllerA.childViewControllers 访问它们——这将为您提供您拥有的任何嵌入式视图控制器的数组。

    在 WWDC 2012 Session Videos 视频中讨论了这些容器视图,名为“在您的应用中采用 Storyboards”。

    【讨论】:

    • 这是否与以编程方式编写的“包含控制器”相同?
    • @huggie,在 IB 中使用容器视图与在代码中使用自定义容器控制器 api 获得的效果相同。
    【解决方案2】:

    我很困惑为什么以及何时需要使用容器视图?

    当人们谈论容器视图时,他们通常指的是包含其他视图的普通旧 UIView。以这种方式使用视图可以让您将其包含的所有视图作为一个组移动,以便保持它们相对于彼此的位置。它还可以轻松地将所有包含的视图作为一个组隐藏。

    我们如何通过代码实例化一个容器视图?

    与通常从代码中实例化 UIView 的方式相同:

    CGRect frame = CGRectMake(someX, someY, someWidth, someHeight);
    UIView *container = [[UIView alloc] initWithFrame:frame];
    

    之后,您可能希望将一些子视图添加到容器中,并最终将容器添加为视图控制器视图的子视图。

    另外,请注意我们在这里讨论的是 views 而不是 view controllers。人们还谈论容器视图控制器,他们的意思是可以管理其他视图控制器的视图控制器。 UITabBarController、UINavigationController 和 UISplitViewController 是 iOS 提供的容器视图控制器的示例。您可以根据需要创建自己的,但这是另一个问题的主题。

    更新:从您的评论中,您显然想知道故事板编辑器中的“容器视图”项。如果将一个拖到视图中,您会看到:

    1. 视图本身是用作占位符的 UIView。

    2. 与视图一起,编辑器创建一个区域,您可以在其中编辑要由子视图控制器管理的内容。见下图。

    这不仅仅是一个对象——它是多个对象。你会得到一个视图、一个子视图控制器和一个“嵌入”segue。您当然可以自己在代码中创建它们,并根据需要适当地连接它们。

    【讨论】:

    • 我不认为这就是操作所要求的。 IB 中提供了一种新型视图(我认为只是在故事板中),它可以包含视图控制器。该视图控制器通过嵌入转场连接起来。这与普通视图和容器视图控制器不同。这件事在幕后到底是什么,我不知道——我找不到任何关于它的文档。我会假设它可以在代码中创建,但我不知道如何。
    • @rdelmar,是的,我问的是 IB 中可用的“容器视图”。我对“容器视图”和常见的“视图”感到困惑。据我了解,视图也可以包含子视图,这些子视图也可以由它们自己的控制器管理。可能是我的理解有误,请帮忙澄清一下。
    • @WilliamChoi,看看我的回答。
    • 对我来说都是很好的答案。由于@rdelmar 较早地回复了更准确的答案,我将他/她的回复标记为答案。非常感谢,大师们!
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多