swift - 如何使用 Swift 在 MVC 中避免臃肿的 ViewController?

标签 swift model-view-controller uiview uiviewcontroller delegates

我试图遵循 Apple MVC 设计模式,其中 View 接收输入并将其传递给 Controller ​​。为了保持 Controller 瘦身并避免它变成一个臃肿的 GodClass 来完成所有的工作,我试图创建一个 UIView 的子类并在那里接收用户输入传递给 Controller ​​进行处理。但我遇到了如何在 Swift 中最好地做到这一点的问题。

为了将用户输入从 View 传递到 Controller ,我的 UIView 子类将需要与关联的 ViewController 进行通信,但我已经看到关于 SO 的帖子关于如何不推荐。 This Q&A ,例如,建议这是不好的,但建议采用委托(delegate)方法。来自同一个问答的评论也指出这很糟糕。

Apple 自己的 MVC 示例没有演示单独的 UIView 子类,而是使用现有的 UITableView,它全部编码在父级 UIViewController,使它成为一个臃肿的 Controller ,而不是一个瘦弱的 Controller 。

如何最好地解决这个问题?

最佳答案

我建议你阅读 apple 关于 MVC 模式的文档,因为我注意到你并不真正理解该模式的原理:Model-View-Controller

为了构建更轻便的ViewController,请看这个问题:Lighter View Controllers

您可能还对 MVVM 感兴趣(在 Cocoa 和 CocoaTouch 中用于 VC 细化)
看看这篇文章:Introduction to MVVM

关于swift - 如何使用 Swift 在 MVC 中避免臃肿的 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33582212/

相关文章:

ios - 用户如何将图钉位置拖到另一个位置,并使 GPS 采用这个新的坐标。 swift

macos - 检查文件是否是 Swift 的别名

ios - iOS中 Controller 之间的通信

java - 为什么我们要使用静止的原子?

ios - 如何继续 Spotlight 搜索并显示内容 ViewController

ios - 单元格数量有限的 UITableView

mysql - 使用 JDBC 和 Java EE 应用 MVC 设计模式连接到 MySQL

ios - Swift - 从 superView 中删除/添加 UIView

ios - 在 Storyboard中定义自定义 UIView

ios - 在 CustomUIView 中覆盖 init() 会使应用程序崩溃(EXC_BAD ACCESS)