ICoder ICoder - 4 months ago 20
iOS Question

How can we hide the tableHeaderView and tableFooterView?

I have two buttons which i add it in one in table-footer and other one in table-header,i know how to hide the headerview of the table using this code

table.tableHeaderView.hidden = YES;

but the problem is there is still space in the top portion of the table.That space is equal to the header-view size,but the view is hidden .It still has the space.How can we disable the table-header by removing this space.I hope you genius developers understand my question.Please help me.
Thanks in advance.

Answer

Instead of hiding the header view you should do,

tableView.tableHeaderView = nil;

And later if you want to show it then just assign it again,

tableView.tableHeaderView = self.headerHolder;

In Swift:

class Feed:SATableViewController
    {
    @IBOutlet var headerHolder:UIView!

    func toggleHeader()
        {
        if tableView.tableHeaderView == nil
            { tableView.tableHeaderView = self.headerHolder }
        else
            { tableView.tableHeaderView = nil }
        }

on your Storyboard, simply drag a UIView in to the table view. It will "magically" become the table view header (if you do another one, it will become the table view footer). HOWEVER you must click on that header view, and drag the referencing outlet to the table view controller, and link it to "headerHolder" ... that part is not "magic".

Note that because of the "!" in the declaration, you have to remember to drag the link on Storyboard or you'll get a runtime error during testing, so that's a good thing.