Is there a way to force a refresh of just a single header in UITableView?

后端 未结 4 952
半阙折子戏
半阙折子戏 2021-02-14 00:11

I have a UITableView where I want to force a refresh of just a specific section header row, not the data rows. For example, refresh the header for section 3. I know how to reloa

相关标签:
4条回答
  • 2021-02-14 00:24

    UITableView does *not have any such method to reload only the header view/title ...You have to reload the whole section or the table.

    0 讨论(0)
  • 2021-02-14 00:26

    I beg to differ. I've run into this while deleting rows with custom section headers and (at least in iOS 6) you can simply call:

    [self tableView:self.tableView viewForHeaderInSection:[indexPath section]];
    

    And as long as you have proper code to return a view in that method, you can easily refresh the header for a specific section:

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    
        if ([self tableView:tableView numberOfRowsInSection:section] == 0) {
    
            return nil; //hide the header if there are no rows...
    
        } else {
            // configure or refresh the header...
        }
    }
    
    0 讨论(0)
  • 2021-02-14 00:40

    Well, in my case, after some asynchronous task i need to update my custom section header view.

    and I get it to update it's height using : This Swift 3+ Code

    //to reload your cell data
    self.tableView.reloadData()
    DispatchQueue.main.async {
    // this is needed to update a specific tableview's headerview layout on main queue otherwise it's won't update perfectly cause reloaddata() is called
      self.tableView.beginUpdates()
      self.tableView.endUpdates()
    }        
    
    0 讨论(0)
  • 2021-02-14 00:43

    If the header is a custom UIView, then you can just call setNeedsDisplay on the UIView rather than on the UITableView.

    0 讨论(0)
提交回复
热议问题