【问题标题】:How to choose what code to put in a View vs. a ViewController?如何选择在 View 和 ViewController 中放置哪些代码?
【发布时间】:2010-11-06 10:58:39
【问题描述】:

在 Xcode 中,实用程序应用程序模板使用以下内容创建项目:

主视图、主视图控制器

FlipsideView、FlipsideViewController

在我的应用程序中,这两个视图对应于主 UI 和一个首选项屏幕。显然,我希望首选项反映在主 UI 中并保存到磁盘以记住设置。我知道该怎么做。

问题是,在查看类似应用程序的示例代码时,我发现有些人将大部分活动代码放在一个视图中,而视图控制器只是一个存根,而另一些则相反。

在决定将我的大部分功能放在哪里时,是否有经验法则?

【问题讨论】:

    标签: iphone cocoa-touch uiviewcontroller


    【解决方案1】:

    一种决定方法:如果您的应用收到内存不足警告,则默认行为是任何当前不可见的视图都可能被销毁。这意味着,如果您有任何无法轻松重新创建的状态信息,则最好不要将其保留在您的视图中。

    所以这取决于你的大部分功能在做什么:如果它维护用户创建的信息,它需要在视图控制器中。

    【讨论】:

      【解决方案2】:

      如果你想成为一个 MVC 纯粹主义者,视图切换和事件处理之类的东西应该放在控制器中,视图构建代码应该放在视图中。

      但如果您在整个应用程序中保持一致,则可以将一些应用程序逻辑放入视图中。

      【讨论】:

      • 我同意通常只有视图构建代码属于视图类。而且通常不需要视图构建代码,因此您可以完全摆脱视图类。
      【解决方案3】:

      StackOverflow 上已经有几个问题涉及模型-视图-控制器。例如,请参阅What goes into the "Controller" in "MVC"?

      在您的特定场景中,偏好本身是一种跟踪用户偏好的模型。保存和加载这些偏好是控制器的职责。显示这些偏好并为用户提供更改它们的方法是视图的职责。最后,当用户更改这些偏好时,视图会将其报告给控制器,控制器会对模型进行适当的更改。

      【讨论】:

        猜你喜欢
        • 2020-06-10
        • 2014-02-25
        • 1970-01-01
        • 1970-01-01
        • 2015-10-31
        • 2016-05-08
        • 2016-09-11
        • 1970-01-01
        • 2012-09-23
        相关资源
        最近更新 更多