我的目标是以两种不同的方式显示经销商位置:地图和表格视图。
我有一个容器视图控制器 (DealersViewController),它包含两个子视图控制器:DealersMapViewController 和 DealersListViewController。用户可以通过放置在导航栏上的 UISegmentedControl 在 VC 之间切换。点击地图注释或表格视图单元将推送 DealersDetailViewController。
切换已经实现(在 Segmented Control 发生变化时使用来自改变视图控制器的代码)并且似乎工作正常,细节的推送也是如此。
我想改进的是容器和孩子之间的数据流。经销商位置从 Internet 下载 (JSON) 到父节点中,完成后在地图 VC 和列表 VC 上设置 NSArray *locations 属性。该数组将包含由 AFNetworking 自动创建的字典对象,每个对象都有位置数据(每个位置字典都有一个标题、副标题、纬度、经度以符合 MKAnnotation 协议,还有其他内容,如图像和描述等)。
我的问题是:我如何确定容器 VC 和两个子 VC “同意”位置数据的结构?从理论上讲,如果有人想开发另一个子视图控制器以添加到我的容器中,例如在集合视图中显示经销商位置,他怎么能正式知道如何期望数据。苹果说:“如果容器需要子声明方法或属性,它应该定义一个协议来强制执行:”。我可以强制孩子声明位置属性,但数组可以包含任何东西……
也许父母可以成为孩子的数据源?我还没有尝试过这种方法。
我可能把事情复杂化了,但我的目标也是学习如何正确创建可重用的组件,并练习使用自定义协议/委托和设计模式等东西。
谢谢。