Ios Swift:如何将数据传递到内嵌在ContainerView中的PageViewController?
VCA有一个容器视图,其中VCB有两个VC:C和D B是C和D 我想直接从A更新C和D中的标签 我阅读了关于在主视图控制器和容器之间传递数据的答案 但是,在我的例子中,我无法保持对A中的控制器的引用,因为它们是在B中的数据源方法内动态创建的 我是否应该继续引用B并通过委托传递数据,然后再次使用委托将数据从B传递到C和D 我应该如何处理这样的问题,有没有更好的方法来设计它 为了让您更好地了解我想要实现的目标,请查看Ios Swift:如何将数据传递到内嵌在ContainerView中的PageViewController?,ios,swift,uipageviewcontroller,Ios,Swift,Uipageviewcontroller,VCA有一个容器视图,其中VCB有两个VC:C和D B是C和D 我想直接从A更新C和D中的标签 我阅读了关于在主视图控制器和容器之间传递数据的答案 但是,在我的例子中,我无法保持对A中的控制器的引用,因为它们是在B中的数据源方法内动态创建的 我是否应该继续引用B并通过委托传递数据,然后再次使用委托将数据从B传递到C和D 我应该如何处理这样的问题,有没有更好的方法来设计它 为了让您更好地了解我想要实现的目标,请查看Runkeeperapp中的此屏幕截图 距离和速度标签都嵌入到带有页面视图控制器的
Runkeeper
app中的此屏幕截图
距离和速度标签都嵌入到带有页面视图控制器的容器视图中。解决方案1: 我的解决方案是扔掉B并将A作为数据源 我将编写一个Swift扩展(如果您使用Swift),并将所有数据源方法都放在其中。然后A可以正常访问C和D 解决方案2: 如果您不能删除B,那么我将创建一个模型类,其中包含Cs和Ds标签的数据 此模型类可以位于以下内部: A) 符合单例模式的DataManager B) 静态类 C) 用户默认值、数据库(值得思考)
C和D将通过观察者模式(
NSNotificationCenter
)在模型更改时发出警报。解决方案1:
我的解决方案是扔掉B并将A作为数据源
我将编写一个Swift扩展(如果您使用Swift),并将所有数据源方法都放在其中。然后A可以正常访问C和D
解决方案2:
如果您不能删除B,那么我将创建一个模型类,其中包含Cs和Ds标签的数据
此模型类可以位于以下内部:
A) 符合单例模式的DataManager
B) 静态类
C) 用户默认值、数据库(值得思考)
C和D将通过观察者模式(
NSNotificationCenter
)在模型更改时发出警报。不知何故,在我自己的头脑风暴中,我发现我提出了最简单的解决方案:
1) 在A中创建C和D实例
2) 使用prepareForSegue
方法将它们传递到B
3) 在B中,根据VC的
4) 瞧,我可以直接从A访问它们的变量和函数。在我自己对这个问题的头脑风暴中,我发现我提出了最简单的解决方案: 1) 在A中创建C和D实例 2) 使用
prepareForSegue
方法将它们传递到B
3) 在B中,根据VC的
4) 瞧,我可以直接从A访问它们的变量和函数。我使用静态实例,它对我非常有用。我使用静态实例,它对我非常有用。