分页引擎架构 - iOS

时间:2016-03-23 07:36:00

标签: ios uiscrollview pagination categories uivewcontroller

创建分页引擎架构的最佳方法是什么?

在我以前的实施中,我是

- UIViewController
   - property UITableView
   - with two sections in tableView. One for normal display and other 
   - for PaginationCell 
   - and rest of the business logic how to enable and hide indicator View

我们认为这是每个功能的重复代码太多,并决定删除重复的代码。

我们在UIViewController上写了一个类别来处理数据分页。现在我们使用scrollViewDidScroll处理类别中的所有计算,并使用objc_setAssociatedObject添加指标页脚视图。

我认为应该将Associated objects视为一种最后的方法,而不是寻找问题的解决方案(实际上,类别本身实际上不应该位于工具链的顶端)

所以我的问题是 - 这个新设计是否是问题的最佳解决方案。或者你会推荐一些更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我不确切地知道您不想要的重复代码是什么,但我完全不认为使用类别是解决此问题的好方法。

我可以建议建立一个具有分离职责的良好架构。这将引导您找到解决方案。

如果有帮助,您可以阅读我的文章Anatomy of a TableView(Controller) Architecture以及Interaction Objects上的具体内容。 您可以将交互对象想象成具有单元所需信息的框,例如:

  • 我应该展示什么?
  • 我应该使用什么样的细胞?
  • 如果使用选择此单元格(目标,选择器,...),我该怎么办? 等

一般来说,按照所描述的方法,你不应该在大多数情况下陷入困境。

对于分页,我会创建一个管理器,它是表视图控制器的依赖。这个想法是:

  1. 用户 tableView ;
  2. 上执行某些操作
  3. tableView的委托(通过交互对象,委托或块)与视图控制器通信;
  4. 视图控制器,向分页管理器询问新参数;
  5. 视图控制器将新参数传递给 tableView的数据源并重新加载;