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 方法提供行高。