ios - 最佳实践?从 segues 传回对象引用

标签 ios reference segue

早上好。

在过去的一年里,我学习了很多教程,并且看到了几种使用 Storyboards 将引用传递回 View Hierarchy 的方法。我想知道一些最佳实践是什么,更重要的是使用以下方法的任何陷阱:

  1. 协议(protocol) - subview 实现一个协议(protocol),父 View 将自己设置为委托(delegate)并响应消息。这可用于将信息传回委托(delegate)。 Child 不需要知道它被调用的原因,它会完成它的工作,并发回它被要求的任何信息。

  2. 具有模型引用的 subview Controller 的公共(public)属性。在 segue 上,您检索对目标 View Controller 的引用。该 View Controller 具有公开公开的模型属性。您传递对模型的引用。我个人喜欢这种方法 - 看不到任何真正的陷阱。然后当 child 进行更改时,模型会直接更改。在 [self.navigationController dismissViewControllerAnimated:YES] 被调用时,或者您导航关闭/关闭 View Controller 时,您在模型中拥有所需的信息。

  3. 还有什么吗? - 其他人有好主意,我很想听听。

感谢任何人对此的投入。我知道给猫剥皮的方法总是不止一种,我只想干净快速地给猫剥皮。 (-对不起猫)

史蒂夫

最佳答案

为了完整起见,除了您列举的两个选项之外,还有几个其他选项:

  1. 使用 unwind segue(iOS 6 及更高版本),您可以通过 prepareForSegue 将数据传递到“目的地”(您要展开到的 Controller );

  2. 为您的主模型对象使用单例;

  3. 使用 Core Data(或 SQLite)进行持久存储;或者

  4. 使用通知或键值观察(尽管这对于将数据更新传达给多个对象要好得多)。

就我个人而言,当呈现 View Controller 想要通知呈现 View Controller 一些信息时,我通常会使用协议(protocol),但这些技术中的每一种都有其各自的用途。

关于ios - 最佳实践?从 segues 传回对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133855/

相关文章:

ios - UICollectionViewCell Segue 到新的 ViewController

ios - 调整麦克风输入音量

ios - 使用 AutoLayout 创建顶部有图像、底部有标签的 UIButton (UIButtonTypeCustom)

ios - 是否可以选择禁用从 Xcode 5.0.2 自动生成配置文件?

reference - Visual Studio 11 提示 web.config 中的一个命名空间导入

ios - 无法将数据传递给下一个ViewController依赖于UIPickerView textField.text?

ios - 不同设备上 int 类型的大小不同

c++ - 返回 'const' 或非常量引用之间的区别

c++ - 与返回类型混淆(引用,常量引用)

iOS7 风格的 push segue,从左到右