UITableView reloadSections/reloadData: header view becomes blank UITableView reloadSections/reloadData: header view becomes blank ios ios

UITableView reloadSections/reloadData: header view becomes blank

I realize that it's a LONG time since this question was posed but I think all of the answers given below are incorrect.

I had the same problem (with someone else's code) and was about to be fooled by this post when I realized that the code was not doing it's reuse of the table header correctly. The header disappearing was because the code was only supplying a UIView, not a UITableViewHeaderFooterView, registered correctly and set up for reuse.

Have a look at the answer here:How to use UITableViewHeaderFooterView?

My blank headers went away when I set up a reusable header.

In Swift:

You need to create a class that's a subclass of UITableViewHeaderFooterView and register it to the table view. Then in viewForHeaderInSection, you do let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderView") as! YourHeaderView, similar to what you do for UITableViewCells. Then return that header.

The deceptive thing is the function calls for a return of UIView? when it really needs a dequeuedReusableHeaderFooterView or reloadData will cause it to disappear

I found a work-around - not very elegant, but it works.Instead of providing a NSIndexSet with more than one section, I call the reloadSections within a for-loop with only one section in each call.

looks like:

    for (Element *eleSection in self.gruppenKoepfe) {        if ( eleSection.type.integerValue == qmObjectTypeFormularSpalte || eleSection.type.integerValue == qmObjectTypeFormularZeile ) {            [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:nCount] withRowAnimation:UITableViewRowAnimationFade];        }        nCount ++;    }