RxDataSources不更新节标题标题

时间:2018-10-02 11:23:40

标签: ios swift rx-swift rxdatasources

我正在使用RxDataSources加载并显示UITableview。我正在尝试使用它所容纳的项目数量来更新节标题,但是不管单元格和项目是否正确更新,标题仍然是陈旧的。

这是我对DataSource对象的代码:

tableViewDataSource = RxTableViewSectionedAnimatedDataSource<TableViewParticipationSection>(
           configureCell: { (_, tableView, _, item) in
               return TableViewCellType.transformData(item).cell(inTableView: tableView)
       }, titleForHeaderInSection: { dataSource, index in
           let sectionModel = dataSource.sectionModels[index]
           return "\(sectionModel.items.count)"
           })

节头的身份仅为{return 0},因为我只有一个节。

此外,我已经确认是否使用此代码:

DispatchQueue.main.asyncAfter(deadline: .now()+3, execute: {
               self?.contentView.tableView.reloadData()
           })

它实际上会更新部分标题,因此陈旧似乎有些问题,但我似乎无法对其进行追踪。

有人有使用RxDataSources的动态标题的经验吗

编辑: 经过进一步的实验,标题将更新,如果我在表格视图中滚动,标题将在某个时候发生变化。

2 个答案:

答案 0 :(得分:0)

结果表明,差异模型中不包含标题或截面模型上的任何数据,因此无论您做什么,都不会有所作为。 RxDataSource不支持非静态标头。解决方案是创建自定义视图并自己进行绑定。

答案 1 :(得分:0)

在我的情况下,我为{p>中的部分设置了新的空UIView

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 0 {
        let customHeaderViewMulti = tableView.dequeueReusableHeaderFooterView(withIdentifier: "CustomHeaderView") as! CustomHeaderView
            return customHeaderView
        }
    return UIView()
}

对于其他情况,您必须return nil