Jan
Jan

Reputation: 7654

UITableView heightForHeaderInSection not working

I have a simple UITableView (sample project here) but the section headers do not respect the height I'm setting in the heightForHeaderInSection

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 40;
} 

The table view looks like this. The 1 section header has a correct height but not the other ones.

enter image description here

When I inspect the view with the Reveal app, it seems that there is a kind of footer after the last cell in the section.

enter image description here

What am I doing wrong?

Upvotes: 10

Views: 15554

Answers (3)

nodehi
nodehi

Reputation: 91

Swift:

Swift version of approved answer:

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNonzeroMagnitude
}

Upvotes: 8

Jan
Jan

Reputation: 7654

What seems to work is this

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0.0001f; // 0.0f does not work
}

or even better, in loadView

self.tableView.sectionFooterHeight = 0.0f;

Upvotes: 26

Pfitz
Pfitz

Reputation: 7344

Guessing into the blue and from your inside with the Reveal App try setting the footer to height 0.

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0;
}

According to the docs:

Special Considerations Prior to iOS 5.0, table views would automatically resize the heights of footers to 0 for sections where tableView:viewForFooterInSection: returned a nil view. In iOS 5.0 and later, you must return the actual height for each section footer in this method.

Upvotes: -3

Related Questions