Search code examples
iosuitableviewheaderfooterreload

Changing UITableView's section header/footer title without reloading the whole table view


Is there any way to reload the section header/footer of a table view without calling [tableView reloadData];?

In fact, I want to show the number of cells in a table view's section in its section footer. The table view is editable and I delete or insert rows using

– insertRowsAtIndexPaths:withRowAnimation:
– deleteRowsAtIndexPaths:withRowAnimation:

It seems that these methods do not update the section footer. Strangely, when I call these methods the table view data-source method

- (NSString *)tableView:(UITableView *)table titleForFooterInSection:(NSInteger)section 

is called (twice!) but it does not update the table view with the new values!!

Anyone has any idea how to fix this problem?


Solution

  • I managed to do it in an indirect way: I created a UILabel and set it as section header/footer.

    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
        // update sectionFooterView.text    
        return sectionFooterView;
    }
    
    - (void)viewDidLoad {
        // create sectionFooterView in Interface Builder, change the frame here
        // use Font-size:15 , BG-Color: clearColor , text-Color: RGB=(97,105,118) 
        // and Text-alignment:Center to look like table view's original footer
        sectionFooterView.frame = CGRectMake(0, 10, 320, 12);
    }
    

    Does anyone know a way to do this without setting a custom footer view?