【问题标题】:Model, View, Controller confusion [duplicate]模型,视图,控制器混淆[重复]
【发布时间】:2011-11-22 00:52:50
【问题描述】:

可能重复:
Understanding Model-View-Controller

我有一个关于如何划分我的代码的一般编程问题,通常(我试图摆脱这个)我只是把它全部写在 viewController 中,在视图控制器中写很多很多代码。但是现在我已经查看了有关 MVC 的一些信息,但我有一些问题。

我的问题

主要是,如果我是一个视图控制器(持有一个模型和一个视图),并且在模型中运行一个方法,我会计算出视图的数字显示,所以只是一个简单的 int 视图将采用并显示在屏幕。为了让我的模型告诉我的视图这样做,我应该直接从模型 ----> 视图开始。还是应该将数据返回给控制器,然后将其发送到视图?

最后,如果我需要将数据发送回控制器,我该怎么做,因为我认为模型不应该知道控制器,反之亦然。

很抱歉这个冗长的问题。感谢你的帮助。

【问题讨论】:

  • 据我所知模型 - 您的数据库 视图 - *您使用 nib 或以编程方式创建的布局 * 控制器 - * 您的 UIViewController *
  • 既然你标记了你的问题 iOS,我认为看看@bzlm 所指的问题是一个很好的点。 Apple 的 MVC 与通常的含义有很大不同。

标签: iphone objective-c ios xcode


【解决方案1】:

网上有很多关于这个的信息。来自Wikipedia

虽然 MVC 有不同的风格,但控制流通常是 如下:

  1. 用户以某种方式与用户界面交互(例如 例如,通过按下鼠标按钮)。

  2. 控制器通知模型用户操作,可能 导致模型状态发生变化。 (例如, 控制器更新用户的购物车。)

  3. 视图查询模型以生成合适的用户 界面(例如视图列出了购物车的内容)。 视图从模型中获取自己的数据。在一些实现中, 控制器可以向视图发出一般指令以进行渲染 本身。在其他情况下,视图由模型自动通知 需要屏幕更新的状态变化(观察者)。

  4. 用户界面等待进一步的用户交互,这 重新启动控制流循环。

MVC 的目标是通过解耦模型和视图来减少 建筑设计的复杂性和增加灵活性和 代码的可维护性。 MVC 也被用来简化设计 自治和自我管理系统

【讨论】:

    【解决方案2】:

    只要您不使用绑定,您就可以简单地为您的数据库操作提供模型类、为您的界面对象提供视图和一个控制器,该控制器从早期检索数据并将其放入后者,您就可以相当有条理。至于返回的方式:您的应用程序所做的一切都是由一种或另一种事件触发的。根据这些,您必须从界面(-> 插座)中获取适当的值。对于其他一切,您实际上必须进一步研究控制器和绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      相关资源
      最近更新 更多