Swift - 重新加载UITableView表头

7

我想重新加载UITableView的部分表头,而不是重新加载整个部分或整个表格。谢谢。

注:- 我遵循已回答问题的答案。但我仍然无法弄清楚这个问题。


你可以查看这个方法 https://dev59.com/92Ag5IYBdhLWcg3whrMV#71378148 - Saifan Nadaf
4个回答

3

没有标准的方法来实现这个,您可以使用 tableView:viewForHeaderInSection: 函数从 UITableView 中获取区头,并进行更新。


3
使用此方法重新加载部分。添加要重新加载的部分的索引集。
tableView.reloadSections(IndexSet(0..<1), with: .automatic)

我只想重新加载部分的页眉。 - GayashanK
然后调用 reloadSections(IndexSet(0..<1), with: .automatic) 方法。它将调用方法 tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?,在此方法中更改标题。 - AkBombe
很遗憾,使用这种方法无法更新标题。 - JBarros35

-1

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)

上述代码将重新加载第二部分的第一个项目和第三部分的第四个项目。

-2

我在我的应用程序中处理的方式是

override func viewDidLayoutSubviews() {
   tableview.tableHeaderView = customHeader
} 

然后要重新加载数据,只需调用该方法:

self.view.layoutSubviews()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接