我应该采用哪种设计方法来创建此自定义视图?

时间:2012-03-15 04:19:25

标签: iphone objective-c interface

我正在尝试创建一个通用的,可重复使用的视图,看起来像一个带衬里的记事本。我决定解决问题的方法(在几次设计迭代之后)是创建一个由UITextViewUIView组成的自定义视图。

当用户滚动文本行时,我希望UIView跟踪滚动方向。 这里的关键是:在我的自定义视图中,我需要更改一个子视图的位置以响应另一个子视图中的事件。有些东西需要协调这些变化......

现在,我想采用的一种方法是使用MVC设计模式。视图控制器可以处理所有事件并相应地移动子视图。然后可以将此MVC嵌入到其他MVC中。

通常,在使用MVC设计模式时,控制器将处理用户事件并操纵模型和视图。但是,我的自定义视图没有模型 - 我想要做的就是让用户执行滚动操作时视图管理自己的子视图。在我看来,MVC设计模式不适合这里有两个原因:

  1. 没有特定于其正在使用的程序的模型或逻辑。
  2. 在我看来,视图应该负责处理改变视图显示方式的用户事件。
  3. ......但我可能错了,这就是我寻求帮助的原因。对于那些比我更有经验并且之前可能做过很多次的人来说,问题是:

    在这种情况下,哪种设计模式适合? MVC或......

1 个答案:

答案 0 :(得分:1)

您希望视图管理自己的子视图吗?然后那样做!那么,如果该模式没有TLA

,该怎么办?

一种典型的方法是在容器视图中实现layoutSubviews。让它检查其当前状态,或窗口中其他视图的状态(例如滚动视图的contentOffset),然后适当地设置其子视图。 (调整它们的大小,重新定位它们等)

尽量保持快速,因为layoutSubviews可能会经常被调用。