TableViewSectionedViewController - 多层级的列表页
演示如何使用 RxDataSources 来布局列表页,你可以在这里下载。
这是一个多层级列表页,它主要需要完成这些需求:
- 每个 显示对应的标题
- 每个
Cell
显示对应的元素以及行号 - 当
Cell
被选中时,显示一个弹框
以上这些需求,只需要一页代码就能完成:
通过使用这个辅助类型,我们就不用执行数据源代理方法,而只需要提供必要的配置函数就可以布局列表页了。
第一个函数 configureCell
是用来配置 Cell
的显示,而这里的参数 element
就是 SectionModel<String, Double>
中的 Double
。
第二个函数 是用来配置 Section
的标题,而 dataSource[sectionIndex].model
就是 SectionModel<String, Double>
中的 String
。
然后为列表页订制一个多层级的数据源 items: Observable<[SectionModel<String, Double>]>
,用这个数据源来绑定列表页。
这里 SectionModel<String, Double>
中的 String
是用来显示 Section
的标题。而 Double
是用来绑定对应的 Cell
。假如我们的列表页是用来显示通讯录的,并且通讯录通过首字母来分组。那么应该把数据定义为 ,然后用首字母 String
来显示 Section
标题,用联系人 Person
来显示对应的 Cell
。
由于 SectionModel<Section, ItemType>
是一个范型,所以我们可以用它来定义任意类型的 Section
以及 Item
。
最后:
这个是用来控制行高的,tableView.rx.setDelegate(self)...
将自己设置成 tableView
的代理,通过 heightForHeaderInSection
方法提供行高。