【问题标题】:Writing a new delegate object vs using a view controller as the delegate编写新的委托对象与使用视图控制器作为委托
【发布时间】:2011-08-30 15:16:41
【问题描述】:

这更多的是关于 iPhone 编码中的一般良好做法的问题。

我有一个滚动视图,其中包含 UISegmentedControls、提交按钮、UIActionSheets、缩放和临时显示的关闭按钮。

我是否应该将所有方法调用(UIControls 的目标操作)(这不是真正正式的委托方法)和缩放 UIScrollViews 的委托方法到这个视图控制器中?或者创建一个新的 [delegate] 对象来处理这些功能会更好吗?

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    我认为,最好的地方是视图控制器。

    我的想法是,根据 MVC 模型,管理 UIControl 的动作或一些缩放既不是处理数据 (M) 也不是一些显示 (V),所以只有一个地方可以做这件事 - 控制器 (C)。

    当然,如果某些 UIControl 事件导致数据管理,您应该(从意识形态上)在模型中进行,但无论如何都应该从控制器调用模型方法。我认为这不是直接连接view<->model的最佳方式。

    【讨论】:

    • 你能举一些例子来说明什么时候应该为委托创建一个新的子类而不是使用视图控制器吗?我在概念上可能完全错误——委托方法应该在视图控制器中实现。 (因为代表是控制器(C))
    • @bierko 不,我不能。我认为这是个坏主意。从技术上讲,非控制器对象可以是委托(例如,您可以在模型类中实现协议,然后将对象添加到您的 xib 并使其成为委托 - 但我认为它破坏了 MVC 的想法)。关于控制器中的控制器——我只能想象一种情况,它可能很有用——如果你有大量的动作(只需对它们进行分组)。但我认为在 iPhone 开发中,这种情况更具理论性。
    【解决方案2】:

    这取决于你需要什么。 委托的想法鼓励人们创建一个新的类来处理更多的事情。但是在大多数情况下,在视图控制器中实现委托方法很方便。例如,您可能希望在委托方法中使用实例变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-12
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多