如何在 UITableView 中刷新单节标题的文本
Posted
技术标签:
【中文标题】如何在 UITableView 中刷新单节标题的文本【英文标题】:How to refresh single section header's text in UITableView 【发布时间】:2019-07-12 16:52:50 【问题描述】:我正在使用表格视图来显示清单。某些视图按类型对列表项进行分组。对于这些,我在括号中显示类型名称和项目计数(例如“今天要做的事情(58)”)。
我想在用户删除或完成项目时刷新该字符串以反映更新后的计数。
这可以通过设置标题的textLabel
属性并调用setNeedsLayout()
轻松完成。问题是,它改变了文本的外观。
之前(所有大写默认部分标题字体,例如“THINGS TO DO TODAY (58)”): screenshot - before
之后(不再全部大写,例如“今天要做的事情 (58)”): screenshot - after
这是我目前用来刷新标题的代码:
func refreshHeaderTitleForSection(_ section: Int)
if let header = tableView.headerView(forSection: section)
header.textLabel?.text = getHeaderTitleForSection(section)
header.setNeedsLayout()
else
return
当表格视图加载时,我调用getHeaderTitleForSection()
来获取titleForHeaderInSection
的字符串,所以它应该是相同的。有没有办法告诉它在不定义自定义标题视图的情况下保持默认格式?
【问题讨论】:
【参考方案1】:您的getHeaderTitleForSection
方法可能会返回非大写字符串。无论您从 titleForHeaderInSection
返回什么,UITableView
都会自动以全部大写形式显示节标题。
最简单的解决方案是在更新标题视图时强制全部大写。
header.textLabel?.text = getHeaderTitleForSection(section).uppercased()
【讨论】:
谢谢@rmaddy,是的,这将在这个例子中起作用。我应该澄清一下,我在整个应用程序的几个地方重用了这个视图。屏幕截图显示其外观为使用分组表视图的独立(全屏)视图控制器。有时它是容器化的而不是分组的,并且标题并非全部大写。我真正想要的是保留文本的初始外观,只需刷新字符串的内容。以上是关于如何在 UITableView 中刷新单节标题的文本的主要内容,如果未能解决你的问题,请参考以下文章
如何初始加载 UITableView 然后观察 Firebase 节点以更改在 Swift 中刷新 tableview?