Swift - 如何使用枚举为 UITableView 制作自定义标题部分?
Posted
技术标签:
【中文标题】Swift - 如何使用枚举为 UITableView 制作自定义标题部分?【英文标题】:Swift - how to make custom header sections for UITableView using enum? 【发布时间】:2020-09-23 07:34:35 【问题描述】:大家好,在我的 tableView 类中,我有以下枚举
enum tabelSecion
case action
case drama
case comedy
我需要使用这个枚举来拥有 3 个不同的节标题。我还创建了一个笔尖来表示一个自定义 sectionHeaderCell,它里面只有一个标签。我怎样才能显示部分标题? 感谢您的帮助
【问题讨论】:
我猜this 可以帮助您并阅读 cmets。我的意思是this 【参考方案1】:您可以通过使用动态 var SectionTitle
扩展您的枚举来做到这一点。
enum TabelSection: Int, CaseIterable
case action
case drama
case comedy
var sectionTitle: String
switch self
case action: return "Action"
...
通过让你枚举一个 Int,就可以用 rawValue 初始化它。初始化它的 rawValue 是您从 TableView 方法中获得的部分。
CaseIterable 也很不错,因此您可以从中获取 numberOfSections
方法的案例数(=sections)。
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
return TabelSection(rawValue: section)?.sectionTitle
编辑:
要为 tableView 的每个部分显示 headerView
,请将 TableViewstyle 更改为 Grouped
在您的代码中,只需为 tableView 提供正确数量的部分。
override func numberOfSections(in tableView: UITableView) -> Int
return TabelSection.allCases.count
如果你真的需要一个自定义的 HeaderView 可以使用下面的方法来实现
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
...
【讨论】:
感谢您的帮助,但我应该如何让内部只有一个标签的 customHeaderSectionCell 出队? 因为部分标题单元格的标签需要更新为“Action”、“Drama”... 您不需要自定义单元格。 headerView 已经提供了一个标签。覆盖titleForHeaderInSection
允许您配置为每个部分显示哪些文本以上是关于Swift - 如何使用枚举为 UITableView 制作自定义标题部分?的主要内容,如果未能解决你的问题,请参考以下文章