gpt4 book ai didi

ios - 使用 MVC 设计模式在 Storyboard 中正确使用 IBOutlets

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:55 24 4
gpt4 key购买 nike

遵循在 Xcode 中使用 Storyboard的 iOS 应用程序的 MVC 设计模式,我注意到我可以将 UILabel、UIImageView 等的 IBOutlet 放入 ViewController 或 UIView 本身。

场景 1:

模型类 -> View Controller (IBOutlets) -> Storyboard场景中的 UIViews

  • ViewController (VC) 从模型中获取必要的数据

  • VC中的IBOutlets用于设置Storyboard中各个UIView中的文字和图片

场景 2:

模型类 -> View Controller -> Storyboard 中的 UIViews (IBOutlets)

  • VC 从模型中抓取数据

  • VC调用每个UIView子类中的方法

  • 每个 UIView 子类中的那些方法通过 UIView 中的 IBOutlets 设置关联 UIView 中的文本和图像

我发现当每个 View 中有许多 UIView、UILabel 和 UIImageView 时,方案 2 更易于管理。另一种方法可能导致在单个 View Controller 中有很多 IBOutlet。

使用 Storyboard时最好遵循哪种方法?

最佳答案

您的观察是正确的,第二种情况导致更易于管理的设计。

两种场景的区别主要在于封装的使用:第一种场景封装在 View+View Controller 层面,让 Controller 自由访问逻辑上应该属于 View 的东西,而第二种场景适本地限制 IBOutlets 对 View 类的访问,强制 View Controller 通过您在 View 中公开的方法与它们交互。

因此,第一种情况在 View 与其 Controller 之间创建了紧密耦合,而第二种情况显着降低了这种耦合。

当然有一个权衡:你付出了减少与更多代码的耦合。在某种程度上,这无关紧要:当您的 View 及其 Controller 相对较小时,很容易将 View 及其关联的 View Controller 的组合作为一个整体对象进行管理。随着 View 的复杂性增加,使用第二种情况的好处变得更加明显。这适用于封装的所有用途,不仅适用于 iOS 场景中的 MVS:您的项目越大 - 使用适当封装获得的返回越多。

关于ios - 使用 MVC 设计模式在 Storyboard 中正确使用 IBOutlets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229710/

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