我有3个不同的子视图直接在故事板中定义,所以他们也有插座。所有这些子视图都意味着在不同的时间在屏幕上占据相同的坐标,只有一个坐标在任何时候占据空间,因此它看起来像一些外观正在改变。我如何去做这件事?假设我也有一个枚举,它定义了我目前所处的状态,从而显示该位置的子视图。IOS故事板:为给定位置加载多个子视图
回答
两个基本选项:
先走一步,这三个子视图添加到您的场景。如果你这样做,有几个技巧,将让你的生活在IB容易得多:
对于每个视图,转到“身份检查”选项卡(第三个)在远展开“文档”部分,并为三个视图中的每一个赋予唯一的“标签”(不要与控件混淆;这只是IB将在内部用于引用您的视图的标签或描述)。这样,当您浏览“文档大纲”(中央面板左侧显示的所有场景列表)中列出的控件树时,您将能够找出哪个是哪个。当你处理这些重叠的视图时,这个“文档大纲”的强大命令将会让你的生活更轻松。
当您在场景中有三个视图时,您可能会发现,将您想要处理的视图拖到三个视图列表的末尾(但与其相同的级别同行)在该“文件大纲”。然后您可以编辑该子视图。在你的IB工作时,为这三个子视图重复这个过程。
如果需要,您可以为三个子视图制作插座集合。当您想要对所有子视图执行某些操作时,这会更容易。在处理只有三个时可能不是很有用,但如果你有更多的子视图,这些集合可能是有用的。
您可以定义独特
UIView
子类各三个视图,它可以让你的IBOutlet
引用列表有点更有条理有用。此外,任何特定于视图的UI逻辑都可以分离到各个子视图中。如果你使用这个技术,如果你打算在动画这三个子视图之间的过渡,它实际上给不相当有用的只是把有问题的场景的顶层视图这三个子视图。在定义三个子视图尺寸的场景中查看视图非常有用,然后将这三个子视图放入此新的中间子视图中。这样,当动画变化时,您可以将动画限制在屏幕的该部分。这个新的临时
UIView
通常被称为容器视图,但不应与您在IB中看到的iOS 6容器视图混淆,后者与下面定义的下一种技术有关。
虽然所有这些招数可使三组重叠的意见,一个场景变得更轻松的操作和管理,其实我觉得一个自定义的容器视图控制器是最好的一段路要走。父场景/视图控制器的一个场景,以及三个不同子视图中的每一个的单独视图控制器和IB场景。它需要一些额外的代码(不难,但第一次做这件事时会有点陌生),但是你的代码和IB场景很好地隔离。在架构上,这是最优雅的方法,恕我直言。如果你想这样做,你应该是指:
WWDC 2011#102 UIViewController Containment(需要苹果开发者ID)
的视图控制器编程指南
- 的containment section
所述的的UIViewController参考文档的containment section
- 1. iOS故事板 - 视图未加载
- 2. iOS故事板 - 具有多个子视图的容器
- 3. 卸载故事板视图
- 4. 故事板 - > XIB |加载视图
- 5. 为故事板创建的视图添加子视图
- 6. 使用故事板作为子视图?
- 7. IBAction为子视图与故事板
- 8. 故事板 - 在故事板中为同一个ViewController创建多个视图
- 9. iOS - 具有故事板的UISplitViewController - 多个主视图和多个详细视图
- 10. 故事板争夺多个视图?
- 11. iOS故事板约束每个子视图到屏幕底部
- 12. UITableViewCell for headerview不加载故事板的子视图
- 13. 将另一个故事板的视图加载到另一个故事板的视图
- 14. 如何加载在故事板自定义视图?
- 15. 如何将故事板UIView设置为视图的子类?
- 16. iOS:使用故事板为内部视图分配一个类
- 17. 将故事板添加为UIViewController中的子视图
- 18. iOS 8键盘重置视图控制器到故事板位置
- 19. 从故事板重新加载视图时,以编程方式添加的iOS子视图
- 20. iOS故事板
- 21. 用故事板,UISplitViewController和多个细节视图(MultipleDetailViews用故事板)
- 22. 发送子视图回从故事板ios
- 23. 在IOS中的故事板中隐藏子视图
- 24. 故事板未呈现添加视图
- 25. 向故事板视图添加Tableview
- 26. 故事板NSTabView TabViewItem定位
- 27. iOS NSAutoLayoutConstraint:未设置故事板中的视图
- 28. Xcode iOS:如何配置从故事板获取的GLKit视图?
- 29. 动态加载故事板
- 30. iOS addView:从无限制的故事板添加视图