因此,当我在分段控件上从一个分段切换到另一个分段时,我试图获取UITableView
节标题以更改背景和文本颜色。为此,我需要重新加载tableView数据,但我只想重新加载节标题。使用时
tableView.reloadData()
它可以工作,但它也会重置tableView中我不想尝试的其余数据。
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let stringForThemeHeader = "Theme Settings"
let stringForToggleHeader = "Password Settings"
if section == 0 {
return stringForThemeHeader
} else {
return stringForToggleHeader
}
}
那是设置标题的代码。
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as! UITableViewHeaderFooterView
if darkModeSegmentedControlSwitcher.selectedSegmentIndex == 1 || darkModeSegmentedControlSwitcher.selectedSegmentIndex == 2 {
view.tintColor = UIColor.red
header.textLabel?.textColor = UIColor.white
} else {
view.tintColor = UIColor.init(red: 247.0/255.0, green: 247.0/255.0, blue: 247.0/255.0, alpha: 1.0)
header.textLabel?.textColor = UIColor.black
}
}
这就是更改文本和背景的代码。选择一个段之后,除非使用以下方式重新加载整个tableView的数据,否则它不会更改:
tableView.reloadData()
所以我只需要知道如何仅重新加载节标题即可解决我的问题。
答案 0 :(得分:0)
您可以手动迭代节标题。
for section in 0..<tableView.numberOfSections {
guard let header = tableView.headerView(forSection: section) else {
continue
}
// do something with the header
}
如果有很多部分,则只能迭代可见的标题。只需使用tableView.visibleCells
来收集可见部分的索引。