在多个视图控制器之间传递数据[重复]
Posted
技术标签:
【中文标题】在多个视图控制器之间传递数据[重复]【英文标题】:Passing data between several view controllers [duplicate] 【发布时间】:2015-02-16 15:25:07 【问题描述】:我创建了 7 个视图控制器,每个控制器都有多个文本字段。 我需要从所有视图控制器中收集数据并在最后一个中发出 API 请求。
传递这些数据的最佳模式是什么?
我正在考虑通过 prepareForSegue 方法传递一个自定义模型对象,但它对于维护来说太复杂了。
我也在考虑单例/NSUserDefaults,但它也不完美。
【问题讨论】:
为什么你认为单例并不完美? UIViewController 是否以模态顺序显示?即一个接一个? Singleton 似乎是一个很好的解决方案,我可能会使用它,但我想知道是否有其他更好的解决方案来解决这个问题。 @Kex 他们被推了 我想我明白你的意思,你担心每次推送一个新的控制器时,你都必须再次访问对象并修改正确的字段,所以看起来不是很优雅。不过,这可能比通过控制器通过 segue 传递一个对象 7 次要好。 现在在 *** 中很难问一个问题,因为你总是在不知道为什么的情况下得到缺点。 【参考方案1】:Singleton 并不是完美的方法,因为它很容易打乱您的内存管理。与 NSUserDefaults 相同(+ 它只吃某些类并持久化可能不应该持久化的数据)。
只需将对象从视图控制器传递到视图控制器。
如果您发现 7 个视图控制器难以维护,您的用户可能也会发现 7 个视图控制器也难以处理。
如果目标视图控制器也是一种 BaseViewController,您还可以有一个通用的 BaseViewController,它在 prepareForSegue:
中传递一个对象。
【讨论】:
以上是关于在多个视图控制器之间传递数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在视图控制器之间的 NSString 中传递数据 - 目标 C [重复]
在视图控制器之间传递 iOS 10 Segue 中的数据 [重复]