我正在开发一个应用程序,其中一个视图控制器负责包含三个视图。
- 该视图中的每一个都有一个somme 测量数据源。
- 视图是同步的 -> 在一个视图中选择一个点在其他视图中具有相似性。
- 用户可以选择各种选项以在每个视图中显示(例如 3 个视图但 5 个视图选项。
这是我目前在这种情况下采取的方法:
- 创建一个组件协议——所有视图都必须符合。
- 例如,组件是一个 UICollecytionView,其中包含选择的详细信息(在其他组件中进行)。
- 该组件具有视图属性,并由控制器动态添加到视图控制器的容器视图中。
- 可见视图控制器由同步管理器同步 - 可见视图由视图控制器注册到该同步管理器。
- 委托主要在组件中实现 -> 一些事件在组件委托中公开(用户选择等,因此同步管理器可以同步其他视图)。
- 视图控制器负责从用户选择的测量批次(例如,另一个视图控制器中给定日期的批次)中捕获委托,然后加载所需的数据并触发同步管理器将所选批次提供给每个可见组件。
- 然后组件负责呈现批次(以及加载/查找新批次的相关点,如果早期批次已选择点)
这种方法正确吗?在视图控制器中拥有每个组件的代码会(并且在第一种方法中确实)会阻碍它的感觉和清晰度!
我也确实阅读了有关 View Controller Containment 的信息(如果我理解正确,这意味着为每个选项创建一个视图控制器并在视图控制器内处理该元素并将它们交换为屏幕上的可见视图)。然后用户选择将触发交换负责具体选择选项的视图控制器,但是最好由父视图控制器进行同步(我是否正确)。
希望我足够清楚......虽然我知道描述是模糊的,但你应该明白主要思想。
重新假设:
- 什么方法更好?该组件似乎是一个很好的可重用组件,我可以非常动态地添加到其他视图控制器等。
- 如果有的话,这些方法中的每一种都有哪些可能的陷阱?