gpt4 book ai didi

ios - 在 Swift 中从多个 ViewController 收集数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:26:39 25 4
gpt4 key购买 nike

我有多个 View Controller (在导航堆栈中或可能不在导航堆栈中),每个 Controller 都根据用户输入收集一些数据。最后我需要在最后一个 Controller 中使用这些数据。

那么实现这种情况的最佳方法/设计模式是什么?

最佳答案

如果你有(一个导航栈)并且你需要从所有这些 View Controller 收集数据

不使用 User-defaults 或 Singleton 的最佳方法

对于你的情况,你必须做 View Controller 的容器来处理特定的 Process 。注意(UINavigationControllerUITabBarControllerUISplitViewController * 只是容器)

例如创建帐户需要 4 个步骤来收集用户输入,每个步骤都由 ViewController 表示,最后您需要将所有这些数据推送到 API 服务器,

因此创建 subview Controller 的父 ContainerViewController 并使用 Delegation 在每一步之后将数据传递给 ParentViewController ,ParentViewController 将成为领导者以允许下一步并为此步骤提供数据.以下是如何开始创建您自己的容器 managing-view-controllers-with-container

不要使用单例

可以从应用程序的任何地方直接访问单例。你无法控制。在你的代码中有很多耦合,使你的对象在未来难以测试

不要使用 UserDefaults

UserDefaults 用于存储在应用程序执行之间持续存在的用户首选项。存储在那里的任何内容都将保留直到您删除,因此它不是一种在对象之间传递数据的机制。

所以你以后要用架构模式

架构

每个 ViewController 应该只处理自己的屏幕。 viewController 也不应该相互了解。如果我们这样做,我们将消除我们的 View Controller 类之间的大量耦合。

所以你可以使用 Coordniator 成为处理所有导航的领导者 Coordniator

并在 MVVM-C 查看如何与 MVVM 集成

Viper 也使用这种技术来处理导航检查 Viper

关于ios - 在 Swift 中从多个 ViewController 收集数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com