我正在修改一点,UITableViewDiffableDataSource
我能够毫无问题地加载一个 tableView。我正在尝试在 tableView 中创建节标题,但是我遇到了一些不稳定的行为。
节 enum enum 定义如下:
enum AlertLevel: String, Codable, CaseIterable {
case green = "green"
case yellow = "yellow"
case orange = "orange"
case red = "red"
}
这是我的实现tableView(viewForHeaderInSection:)
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let label = UILabel()
label.text = dataSource.snapshot().sectionIdentifiers[section].rawValue.capitalized
label.textColor = UIColor.black
return label
}
这给了我在 tableView 顶部的标题单元格中堆叠的 4 个标签。
我启动了 Dash 到 RTFD,我看到tableView(titleForHeaderInSection:)
这是另一种剥那只猫的方法。所以我把它扔了进去,而不是:
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return dataSource.snapshot().sectionIdentifiers[section].rawValue.capitalized
}
我扔了一个断点,它永远不会被击中。所以我实现tableView(heightForHeaderInSection:)
了标题并更新了标题,但标题没有显示字符串。
该表的加载速度比“老式方式” IndexPaths
(我正在使用 USGS 地震数据库来学习TableViewDiffableDataSource
)要快很多,但我无法显示标题。
任何人都知道如何让部分工作在一个TableViewDiffableDataSource
?我很难相信他们会在没有这种基本功能的情况下让这样的东西进入野外,所以我只能得出结论,我正在搞砸一些东西......什么,我不知道 :)
哦...这是我定义数据源的方式:
func makeDataSource() -> UITableViewDiffableDataSource<AlertLevel, Earthquake> {
return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, earthquake in
let cell = tableView.dequeueReusableCell(withIdentifier: self.reuseID, for: indexPath)
cell.textLabel?.text = earthquake.properties.title
cell.detailTextLabel?.text = earthquake.properties.detail
return cell
}
}