如何在UITableView中刷新单个节标题的文本



我正在使用表格视图来显示清单。某些视图按类型对列表项进行分组。对于这些,我在括号中显示类型名称并带有项目计数(例如"今天要做的事情 (58("(。

我想刷新该字符串以反映用户删除或完成项目时的更新计数。

这可以通过设置标头的 textLabel 属性并调用 setNeedsLayout() 轻松完成。问题是,它会改变文本的外观。

之前(所有大写默认部分标题字体,例如"今天要做的事情(58("(:屏幕截图 - 之前

之后(不再是全部大写,例如"今天要做的事情(58("(:屏幕截图 - 之后

这是我当前用于刷新标头的代码:

func refreshHeaderTitleForSection(_ section: Int) {
    if let header = tableView.headerView(forSection: section) {
      header.textLabel?.text = getHeaderTitleForSection(section)
      header.setNeedsLayout()
    } else {
      return
    }
  }

我调用getHeaderTitleForSection()以获取加载表视图时titleForHeaderInSection的字符串,因此它应该是相同的。有没有办法告诉它保留默认格式而不定义自定义标题视图?

据推测,您的 getHeaderTitleForSection 方法返回非大写字符串。 UITableView自动以全大写形式显示节标题,无论您从titleForHeaderInSection返回什么。

最简单的解决方案是在更新标题视图时强制使用全部大写。

header.textLabel?.text = getHeaderTitleForSection(section).uppercased()

最新更新