【发布时间】:2013-11-25 13:59:48
【问题描述】:
这是一个 MVC 最佳实践问题。我会解释我的设计,然后你们可以告诉我这听起来是否正确。
我有一个视图,它显示 PDF 中的文本数据,类似于 iBooks,名为 TextView.h。它有一个 UIScrollView,它使用分页来允许读者在页面中滑动。
我假设将文本加载和分解成页面的所有逻辑都应该由模型类完成。 因此,对于最佳实践,我想我创建一个模型类并让它负责 1)打开pdf 2) 有一个公共接口,视图控制器可以使用它来根据它想要的页面查询文本数据
我有一个 TextViewController.h,它是 TextView.h 的代表。 TextViewController 将负责 1)加载文本视图 2)查询模型并使用结果填充视图。例如
UILabel *label = [model getTextForPage:1];
[myView addPage:label];
3) 给 textViewController 一个委托方法,每次用户在视图中翻页时都会触发该委托方法。即视图控制器将监听视图的 didEndDecelerating 方法。发生这种情况时,viewController 可以获取新页面的文本并将其传递给视图,例如
UILabel *label = [model getTextForPage:x];
[myView addPage:label];
如果所有这些听起来都正确,请告诉我。谢谢!
【问题讨论】:
-
一般来说,您的模型类不应该知道数据是如何呈现的,包括使用
UILabel对象呈现的事实。因此,拥有一个返回UILabel的模型方法并不是很好的关注点分离。
标签: ios iphone model-view-controller