2013-04-16 43 views
1

我有3个不同的子视图直接在故事板中定义,所以他们也有插座。所有这些子视图都意味着在不同的时间在屏幕上占据相同的坐标,只有一个坐标在任何时候占据空间,因此它看起来像一些外观正在改变。我如何去做这件事?假设我也有一个枚举,它定义了我目前所处的状态,从而显示该位置的子视图。IOS故事板:为给定位置加载多个子视图

回答

2

两个基本选项:

  1. 先走一步,这三个子视图添加到您的场景。如果你这样做,有几个技巧,将让你的生活在IB容易得多:

    • 对于每个视图,转到“身份检查”选项卡(第三个)在远展开“文档”部分,并为三个视图中的每一个赋予唯一的“标签”(不要与控件混淆;这只是IB将在内部用于引用您的视图的标签或描述)。这样,当您浏览“文档大纲”(中央面板左侧显示的所有场景列表)中列出的控件树时,您将能够找出哪个是哪个。当你处理这些重叠的视图时,这个“文档大纲”的强大命令将会让你的生活更轻松。

    • 当您在场景中有三个视图时,您可能会发现,将您想要处理的视图拖到三个视图列表的末尾(但与其相同的级别同行)在该“文件大纲”。然后您可以编辑该子视图。在你的IB工作时,为这三个子视图重复这个过程。

    • 如果需要,您可以为三个子视图制作插座集合。当您想要对所有子视图执行某些操作时,这会更容易。在处理只有三个时可能不是很有用,但如果你有更多的子视图,这些集合可能是有用的。

    • 您可以定义独特UIView子类各三个视图,它可以让你的IBOutlet引用列表有点更有条理有用。此外,任何特定于视图的UI逻辑都可以分离到各个子视图中。

    • 如果你使用这个技术,如果你打算在动画这三个子视图之间的过渡,它实际上给相当有用的只是把有问题的场景的顶层视图这三个子视图。在定义三个子视图尺寸的场景中查看视图非常有用,然后将这三个子视图放入此新的中间子视图中。这样,当动画变化时,您可以将动画限制在屏幕的该部分。这个新的临时UIView通常被称为容器视图,但不应与您在IB中看到的iOS 6容器视图混淆,后者与下面定义的下一种技术有关。

  2. 虽然所有这些招数可使三组重叠的意见,一个场景变得更轻松的操作和管理,其实我觉得一个自定义的容器视图控制器是最好的一段路要走。父场景/视图控制器的一个场景,以及三个不同子视图中的每一个的单独视图控制器和IB场景。它需要一些额外的代码(不难,但第一次做这件事时会有点陌生),但是你的代码和IB场景很好地隔离。在架构上,这是最优雅的方法,恕我直言。如果你想这样做,你应该是指:

相关问题