Swift:如何将数据传递给嵌入在ContainerView中的PageViewController?

时间:2016-09-29 13:05:22

标签: ios swift uipageviewcontroller

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

中的此屏幕截图

enter image description here

距离和步速标签都嵌入到容器视图中,并带有页面视图控制器。

2 个答案:

答案 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方法

将它们传递给 B

3)在 B 中根据VC的

分配它们

4)Voila,我可以直接从 A

访问他们的变量和函数