我想重新加载UITableView的部分表头,而不是重新加载整个部分或整个表格。谢谢。
注:- 我遵循已回答问题的答案。但我仍然无法弄清楚这个问题。
我想重新加载UITableView的部分表头,而不是重新加载整个部分或整个表格。谢谢。
注:- 我遵循已回答问题的答案。但我仍然无法弄清楚这个问题。
没有标准的方法来实现这个,您可以使用 tableView:viewForHeaderInSection:
函数从 UITableView 中获取区头,并进行更新。
tableView.reloadSections(IndexSet(0..<1), with: .automatic)
对user3608500的回答进行补充
仅重新加载标题视图
我认为您的标题视图类正在扩展UITableViewHeaderFooterView类。在扩展中添加一个函数。
extension UITableViewHeaderFooterView{
func reloadHeaderCell(){
preconditionFailure("This method must be overridden")
}
}
现在在您的Header类中覆盖此内容,如下所示
class HeaderView: UITableViewHeaderFooterView {
override func reloadHeaderCell() {
////// add your logic to reload view
}
}
self.tableView?.headerView(forSection:0)?.reloadHeaderCell()
重新加载整个部分视图
要重新加载包括行(这里是第0和第2部分)在内的整个部分/部分视图,您可以按以下方式调用
self.tableView?.reloadSections([0,2], with: .none)
重新加载整个表视图
要重新加载整个表视图,您可以像下面这样调用
self.tableView?.reloadData()
重新加载特定行
要重新加载特定行/行,您可以按以下方式调用
self.tableView?.reloadRows(at: [IndexPath(item: 1, section: 2), IndexPath(item: 4, section: 3)], with: .none)
我在我的应用程序中处理的方式是
override func viewDidLayoutSubviews() {
tableview.tableHeaderView = customHeader
}
然后要重新加载数据,只需调用该方法:
self.view.layoutSubviews()