VC A 有一个容器视图,其VC B 有两个VC: C 和 D < / strong>即可。
B 是 C 和 D
的数据源我想直接从 A
更新 C 和 D 中的标签我阅读了关于在Master View Controller和Container之间传递数据的this答案。
但是,在我的情况下,我无法继续引用 A 中的控制器,因为它们是在 B
中的DataSource方法内动态创建的我应该继续引用 B 并通过委托传递数据,然后将数据从 B 传递到 C 和 D < / strong>再次使用委托?
我应该如何解决这个问题,是否有更好的方法来设计它?
为了让您更好地了解我想要实现的目标,请查看Runkeeper
app
距离和步速标签都嵌入到容器视图中,并带有页面视图控制器。
答案 0 :(得分:0)
解决方案1:
我的解决方案是抛弃 B 并使 A 数据源。
我会写一个Swift扩展(如果你使用Swift)并且只是将所有数据源方法放入其中。然后 A 可以访问 C &amp; D 正常。
解决方案2:
如果您无法移除 B ,那么我会创建一个模型类,其中包含 C 和 D 的数据标签。
这个模型类可以在里面:
A)符合Singleton模式的DataManager
B)静态类
C)UserDefaults,DataBase(只是值得深思)
C 和 D 会在模型更改中通过观察者模式(NSNotificationCenter
)提醒
答案 1 :(得分:0)
在我自己关于这个问题的头脑风暴期间,我发现我省略了最直接的解决方案:
1)在 A
中创建 C 和 D 个体 2)使用prepareForSegue
方法
3)在 B 中根据VC的
分配它们4)Voila,我可以直接从 A
访问他们的变量和函数