Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:如何将数据传递到内嵌在ContainerView中的PageViewController?_Ios_Swift_Uipageviewcontroller - Fatal编程技术网

Ios Swift:如何将数据传递到内嵌在ContainerView中的PageViewController?

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中的此屏幕截图 距离和速度标签都嵌入到带有页面视图控制器的

VCA有一个容器视图,其中VCB有两个VC:CD

BCD

我想直接从A更新CD中的标签

我阅读了关于在主视图控制器和容器之间传递数据的答案

但是,在我的例子中,我无法保持对A中的控制器的引用,因为它们是在B中的数据源方法内动态创建的

我是否应该继续引用B并通过委托传递数据,然后再次使用委托将数据从B传递到CD

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

为了让您更好地了解我想要实现的目标,请查看
Runkeeper
app中的此屏幕截图


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

解决方案1:

我的解决方案是扔掉B并将A作为数据源

我将编写一个Swift扩展(如果您使用Swift),并将所有数据源方法都放在其中。然后A可以正常访问CD

解决方案2:

如果您不能删除B,那么我将创建一个模型类,其中包含Cs和Ds标签的数据

此模型类可以位于以下内部:

A) 符合单例模式的DataManager

B) 静态类

C) 用户默认值、数据库(值得思考)


CD将通过观察者模式(
NSNotificationCenter
)在模型更改时发出警报。

解决方案1:

我的解决方案是扔掉B并将A作为数据源

我将编写一个Swift扩展(如果您使用Swift),并将所有数据源方法都放在其中。然后A可以正常访问CD

解决方案2:

如果您不能删除B,那么我将创建一个模型类,其中包含Cs和Ds标签的数据

此模型类可以位于以下内部:

A) 符合单例模式的DataManager

B) 静态类

C) 用户默认值、数据库(值得思考)


CD将通过观察者模式(
NSNotificationCenter
)在模型更改时发出警报。

不知何故,在我自己的头脑风暴中,我发现我提出了最简单的解决方案:

1) 在A中创建CD实例

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

3) 在B中,根据VC的


4) 瞧,我可以直接从A

访问它们的变量和函数。在我自己对这个问题的头脑风暴中,我发现我提出了最简单的解决方案:

1) 在A中创建CD实例

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

3) 在B中,根据VC的


4) 瞧,我可以直接从A

访问它们的变量和函数。我使用静态实例,它对我非常有用。我使用静态实例,它对我非常有用。