Swift: 如何将数据传递给嵌入在ContainerView 中的PageViewController?
Swift: How to pass data to PageViewController which is embedded in ContainerView?
VC A 有一个容器视图 VC B 有两个 VC 的:C 和 D。
B 是 C 和 D
的数据源
我想直接从 A[=14 更新 C 和 D 中的标签=]
我阅读了 关于在主视图控制器和容器之间传递数据的回答。
但是,在我的例子中,我无法保留对 A 中控制器的引用,因为它们是在 B 中的 DataSource 方法中动态创建的
我是否应该保留对 B 的引用并通过委托传递数据,然后将数据从 B 传递到 C 和 D 再次使用委托?
这样的问题应该怎么处理,有没有更好的设计方法?
为了让您更好地了解我想要实现的目标,请查看来自 Runkeeper
应用
的屏幕截图
距离和配速标签都嵌入到带有页面视图控制器的容器视图中。
解决方案 1:
我的解决方案是放弃 B 并使 A 成为数据源。
我会写一个 Swift 扩展(如果您使用的是 Swift),然后将所有数据源方法放入其中。然后A可以正常访问C & D
解决方案 2:
如果你不能删除 B 那么我会制作一个模型 Class 其中包含 Cs 的数据和 Ds 个标签。
此款class可入内:
A) 符合单例模式的DataManager
B) 静态 class
C) UserDefaults,数据库(仅供思考)
C 和 D 将通过观察者模式 (NSNotificationCenter
)
在模型更改中收到警报
不知何故,在我对这个问题进行头脑风暴时,我发现我忽略了最直接的解决方案:
1) 在 A
中创建 C 和 D 实例
2) 使用prepareForSegue
方法
将它们传递给B
3) 在 B 中将它们分配给根据 VC 的
4) 瞧,我可以直接从 A
访问它们的变量和函数
VC A 有一个容器视图 VC B 有两个 VC 的:C 和 D。
B 是 C 和 D
的数据源我想直接从 A[=14 更新 C 和 D 中的标签=]
我阅读了
但是,在我的例子中,我无法保留对 A 中控制器的引用,因为它们是在 B 中的 DataSource 方法中动态创建的
我是否应该保留对 B 的引用并通过委托传递数据,然后将数据从 B 传递到 C 和 D 再次使用委托?
这样的问题应该怎么处理,有没有更好的设计方法?
为了让您更好地了解我想要实现的目标,请查看来自 Runkeeper
应用
距离和配速标签都嵌入到带有页面视图控制器的容器视图中。
解决方案 1:
我的解决方案是放弃 B 并使 A 成为数据源。
我会写一个 Swift 扩展(如果您使用的是 Swift),然后将所有数据源方法放入其中。然后A可以正常访问C & D
解决方案 2:
如果你不能删除 B 那么我会制作一个模型 Class 其中包含 Cs 的数据和 Ds 个标签。
此款class可入内:
A) 符合单例模式的DataManager
B) 静态 class
C) UserDefaults,数据库(仅供思考)
C 和 D 将通过观察者模式 (NSNotificationCenter
)
不知何故,在我对这个问题进行头脑风暴时,我发现我忽略了最直接的解决方案:
1) 在 A
中创建 C 和 D 实例2) 使用prepareForSegue
方法
3) 在 B 中将它们分配给根据 VC 的
4) 瞧,我可以直接从 A
访问它们的变量和函数