当前位置: 首页 > 知识库问答 >
问题:

使用MVC设计模式在故事板中正确使用IBOutlet

轩辕晔
2023-03-14

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

情景1:

模型类-

>

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

    VC中的IBoutlet用于设置脚本中各种UIView中的文本和图像

    情景2:

    模型类-

    >

    VC在每个UIView子类中调用方法

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

    我发现场景2更容易管理,当你有很多UIView和UILabels和UIImageView在每个视图。另一种方法可能导致单个视图控制器中出现大量IBOutlet。

    使用故事板时,哪种方法最好?

  • 共有1个答案

    姚信鸥
    2023-03-14

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

    您的两个场景之间的差异主要在于它们对封装的使用:第一个场景在视图控制器级别进行封装,允许控制器自由访问逻辑上应该是视图一部分的内容,而第二个场景正确地限制了对视图类的IBOutlets的访问,强制视图控制器通过您在视图中公开的方法与它们交互。

    因此,第一个场景在视图及其控制器之间创建了紧密耦合,而第二个场景显著减少了这种耦合。

    当然有一个权衡:你为减少与更多代码的耦合付出代价。在某一点上,这并不重要:当您的视图及其控制器相对较小时,很容易将视图及其关联视图控制器的组合作为单片对象进行管理。随着视图复杂性的增加,使用第二种场景的好处变得更加明显。这适用于封装的所有用途,不仅仅适用于iOS场景中的MVS:你的项目越大——你从使用适当的封装中获得的回报就越多。

     类似资料:
    • 如何使用 MVC 模式 首先,你需要确定你的项目中的每个类都是三大基本类型中的一种:控制器、模型、视图。不要在一个类里糅合多个角色。目前我们创建了 Album 类和 AlbumView 类是符合要求的,做得很好。 然后,为了确保你遵循这种模式,你最好创建三个项目分组来存放代码,分别是 Model、View、Controller,保持每个类型的文件分别独立。 接下来把 Album.swift 拖到

    • 我刚刚开始在Java应用程序中使用MVC模式。我以前在CodeIgniter中使用过一些MVC,但我想确保我能正确使用MVC。 > 视图是GUI文件,它向控制器发送输入。 然后控制器接收这些输入,并最终将它们发送给模型。 在我的CodeIgniter应用程序中,我使用的所有模型都是数据库相关的东西。例如,如果我需要验证电子邮件,我应该在控制器中还是在模型中进行?

    • 我目前正在从事一个项目,该项目需要一个生成简单XML的对象。我对XML很陌生,还在学习c 我试图实现的是一个可以在代码中这样调用的函数: 在这一行之后,字符串应该包含如下内容:

    • 本文向大家介绍详解C#设计模式编程中的模板方法模式使用,包括了详解C#设计模式编程中的模板方法模式使用的使用技巧和注意事项,需要的朋友参考一下 一、引言 提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载

    • 问题内容: 任何人都可以用简单的命令模式示例来解释。我在互联网上指称,但我感到困惑。 问题答案: 在大多数情况下,命令是不可变的,并且包含封装了按需执行的单个动作的指令。您可能还具有一个RuntimeCommand,该RuntimeCommand在执行时接受指令,但是根据实现的不同,它会更深入地研究Strategy或Decorator模式。 我个人认为,注意命令的不变上下文非常重要,否则命令将成为

    • 问题内容: 前言:我正在尝试在MVC体系结构和关系数据库中使用存储库模式。 我最近开始学习PHP中的TDD,并且意识到我的数据库与我的其余应用程序之间的联系太紧密了。我已经阅读了有关存储库并使用IoC容器将其“注入”到控制器中的信息。很酷的东西。但是现在有一些关于存储库设计的实际问题。考虑以下示例。 问题1:字段过多 所有这些查找方法均使用全选()方法。但是,在我的应用程序中,我总是试图限制获得的