如何在 UITableViewDiffableDataSource 中添加 Header 名称
How to add Header Name in UITableViewDiffableDataSource
我尝试为 UITableView
中的每个部分添加 header 标题,但在本例中是 UITableViewDiffableDataSource
,我不知道应该在哪里添加。我的部分代码:
private func prepareTableView() {
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
dataSource = UITableViewDiffableDataSource<Sections, User>(tableView: tableView, cellProvider: { (tableView, indexPath, user) -> UITableViewCell? in
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = user.name
return cell
})
}
private func addElement(_ user: User) {
var snap = NSDiffableDataSourceSnapshot<Sections, User>()
snap.appendSections([.main, .second])
if isFirst {
users.append(user)
} else {
secondUsers.append(user)
}
snap.appendItems(users, toSection: .main)
snap.appendItems(secondUsers, toSection: .second)
isFirst.toggle()
dataSource.apply(snap, animatingDifferences: true, completion: nil)
dataSource.defaultRowAnimation = .fade
}
UICollectionViewDiffableDataSource
有一个参数 supplementaryViewProvider
,用户可以在其中配置 headers。在 UITableViewDiffableDataSource
中确实存在类似的东西
我能够通过 UITableViewDiffableDataSource
class 中的 subclass 这样做:
class MyDataSource: UITableViewDiffableDataSource<Sections, User> {
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Hello, World!"
}
}
然后在你的代码中代替这个:
dataSource = UITableViewDiffableDataSource<Sections, User>
使用你自己的数据源class:
dataSource = MyDataSource<Sections, User>
是的,见UICollectionViewDiffableDataSource
的supplementaryViewProvider
属性
Apple 并没有太多 documentation,但是您可以使用类似于初始化可比较数据源本身的方式的闭包来初始化它。它 returns 一个 UICollectionReusableView
可以是通用视图,也可以是您的页眉或页脚视图子类之一。
我尝试为 UITableView
中的每个部分添加 header 标题,但在本例中是 UITableViewDiffableDataSource
,我不知道应该在哪里添加。我的部分代码:
private func prepareTableView() {
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
dataSource = UITableViewDiffableDataSource<Sections, User>(tableView: tableView, cellProvider: { (tableView, indexPath, user) -> UITableViewCell? in
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = user.name
return cell
})
}
private func addElement(_ user: User) {
var snap = NSDiffableDataSourceSnapshot<Sections, User>()
snap.appendSections([.main, .second])
if isFirst {
users.append(user)
} else {
secondUsers.append(user)
}
snap.appendItems(users, toSection: .main)
snap.appendItems(secondUsers, toSection: .second)
isFirst.toggle()
dataSource.apply(snap, animatingDifferences: true, completion: nil)
dataSource.defaultRowAnimation = .fade
}
UICollectionViewDiffableDataSource
有一个参数 supplementaryViewProvider
,用户可以在其中配置 headers。在 UITableViewDiffableDataSource
我能够通过 UITableViewDiffableDataSource
class 中的 subclass 这样做:
class MyDataSource: UITableViewDiffableDataSource<Sections, User> {
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Hello, World!"
}
}
然后在你的代码中代替这个:
dataSource = UITableViewDiffableDataSource<Sections, User>
使用你自己的数据源class:
dataSource = MyDataSource<Sections, User>
是的,见UICollectionViewDiffableDataSource
supplementaryViewProvider
属性
Apple 并没有太多 documentation,但是您可以使用类似于初始化可比较数据源本身的方式的闭包来初始化它。它 returns 一个 UICollectionReusableView
可以是通用视图,也可以是您的页眉或页脚视图子类之一。