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

问题描述 投票:1回答:2

VC A有一个带有VC B的容器视图,它有两个VC:C和D.

B是C和D的数据源

我想直接从A更新C和D中的标签

我读了关于在Master View Controller和Container之间传递数据的this答案。

但是,在我的情况下,我无法继续引用A中的控制器,因为它们是在B中的DataSource方法内动态创建的

我应该继续引用B并通过委托传递数据,然后再使用委托将数据从B传递到C和D吗?

我应该如何处理这样的问题,有没有更好的方法来设计呢?

为了让您更好地了解我想要实现的目标,请查看Runkeeper应用程序的截图

enter image description here

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

ios swift uipageviewcontroller
2个回答
0
投票

解决方案1:

我的解决方案是抛弃B并使A成为数据源。

我会写一个Swift扩展(如果你使用Swift)并且只是将所有数据源方法放在其中。然后A可以正常访问C&D。

解决方案2:

如果你不能删除B,那么我会创建一个具有Cs和Ds标签数据的Model Class。

这个模型类可以在里面:

A)符合Singleton模式的DataManager

B)静态类

C)UserDefaults,DataBase(只是值得深思)

C和D将通过观察者模式(NSNotificationCenter)在模型更改中发出警报


0
投票

在我自己关于这个问题的头脑风暴期间,我发现我省略了最简单的解决方案:

1)在A中创建C和D实例

2)使用prepareForSegue方法将它们传递给B.

3)在B中将它们分配给VC

4)Voila,我可以直接从A访问它们的变量和函数

© www.soinside.com 2019 - 2024. All rights reserved.