ios - 如何在不直接由 segues 连接的 View Controller 之间共享数据

标签 ios objective-c cocoa-touch uiviewcontroller uistoryboard

enter image description here

将用户在此处表示为 1 的 View Controller 的文本字段中输入的数据发送到 View Controller 2 的最佳策略是什么?这两个 View 没有直接连接到 segues。

是否应该使用委托(delegate)来处理?如果是这样,哪个对象将是委托(delegate),哪个对象将被委派?

是否可以通过在对象 1 中保留对对象 2 的引用并调用从 1 到 2 接受数据的方法来实现从 1 到 2 的数据发送?事实上,我试过了并且有效。但这是在 View Controller 之间共享数据的正确方法吗?

或者,是否可以在主 AppDelegate 中放置一个数据源?如果是,如何?

最佳答案

简短的回答是“视情况而定”。

是的,您可以让 View Controller 1 维护一个指向 View Controller 2 的指针,并设置一个协议(protocol)来传递信息。但是,在 View Controller 1 收集信息时, View Controller 2 可能不存在。或者您可能不希望 View Controller 1 必须了解 View Controller 2。

我可能会设置一个应用程序范围的数据容器单例。 (如果您不熟悉它,请在 SO 或 Google 上搜索 Objective C 中的单例设计模式。)然后为您想要全局化的信息设置属性。您可以非常轻松地向数据容器对象添加持久性,然后您就有了一个用于整个应用程序状态数据的中央存储库。

关于ios - 如何在不直接由 segues 连接的 View Controller 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317735/

相关文章:

ios - 我们是否需要注册 Apple Developer Program 才能在真实设备上安装 iOS 应用程序以在 Appium 中进行测试?

iphone - 点击 UITextView 中的单词

IOS 以固定时间间隔调度 Action

iphone - 使用 NSFetchedResultsController 进行分页?

ios - 如何防止 NSTextAttachment 断行?

ios - UIButton 在 TableView 单元格中不可见

jquery - Phonegap AJAX 调用失败

iphone - 在提高音量​​的自定义相机覆盖 ios 上捕获图片

Objective-C 委托(delegate) : Have another class I call that parses XML. 需要知道它何时在外部完成

ios - 如何在 objective-c 中创建动态 SOAP 信封