我正在使用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
的动态标题的经验吗
编辑: 经过进一步的实验,标题将更新,如果我在表格视图中滚动,标题将在某个时候发生变化。
答案 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
。