我正在尝试创建一个通用的,可重复使用的视图,看起来像一个带衬里的记事本。我决定解决问题的方法(在几次设计迭代之后)是创建一个由UITextView
和UIView
组成的自定义视图。
当用户滚动文本行时,我希望UIView跟踪滚动方向。 这里的关键是:在我的自定义视图中,我需要更改一个子视图的位置以响应另一个子视图中的事件。有些东西需要协调这些变化......
现在,我想采用的一种方法是使用MVC设计模式。视图控制器可以处理所有事件并相应地移动子视图。然后可以将此MVC嵌入到其他MVC中。
通常,在使用MVC设计模式时,控制器将处理用户事件并操纵模型和视图。但是,我的自定义视图没有模型 - 我想要做的就是让用户执行滚动操作时视图管理自己的子视图。在我看来,MVC设计模式不适合这里有两个原因:
......但我可能错了,这就是我寻求帮助的原因。对于那些比我更有经验并且之前可能做过很多次的人来说,问题是:
在这种情况下,哪种设计模式适合? MVC或......
答案 0 :(得分:1)
您希望视图管理自己的子视图吗?然后那样做!那么,如果该模式没有TLA?
,该怎么办?一种典型的方法是在容器视图中实现layoutSubviews
。让它检查其当前状态,或窗口中其他视图的状态(例如滚动视图的contentOffset
),然后适当地设置其子视图。 (调整它们的大小,重新定位它们等)
尽量保持快速,因为layoutSubviews
可能会经常被调用。