Swift - 重新加载 UITableView 标题

Posted

技术标签:

【中文标题】Swift - 重新加载 UITableView 标题【英文标题】:Swift - Reload UITableView Header 【发布时间】:2017-05-09 07:03:01 【问题描述】:

我正在尝试仅重新加载 UITableView 部分标题不重新加载整个部分或重新加载整个表格。提前致谢。

注意:- 我遵循已回答问题的答案。但我还是想不通。

【问题讨论】:

你可以查看这个方法***.com/a/71378148/7301439 【参考方案1】:

使用此方法重新加载部分。添加要重新加载的部分的索引集。

tableView.reloadSections(IndexSet(0..<1), with: .automatic)

【讨论】:

我只想重新加载部分的标题。 然后调用 reloadSections(IndexSet(0.. String?在此方法中更改标题。 很遗憾没有使用这种方法更新标题【参考方案2】:

没有标准方法可以做到这一点,您可以使用tableView:viewForHeaderInSection: 函数从 UITableView 获取节标题并进行更新。

【讨论】:

【参考方案3】:

附加到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 节中的第 1 项和第 3 节中的第 4 项。

【讨论】:

【参考方案4】:

我的应用程序是如何处理的

override func viewDidLayoutSubviews() 
   tableview.tableHeaderView = customHeader
 

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

self.view.layoutSubviews()

【讨论】:

以上是关于Swift - 重新加载 UITableView 标题的主要内容,如果未能解决你的问题,请参考以下文章

iCloud 同步后 UITableView 不会重新加载(Swift 2)

在 UITableView (swift2) 中选择单元格时更新/重新加载 ViewController

UITableView 在使用 Swift 中的 Master Detail App 滚动之前不会重新加载

(Swift)如何通过重新加载 UITableView 根据 UITextfield 输入(动画)显示/隐藏单元格?

进行第二次 Json 调用 Swift 3 后如何在 UITableview 中重新加载数据

如何仅在 swift 中重新加载 tableViewCell?