Houman
Houman

Reputation: 66320

How to refresh footer view in iOS?

I have created a view (xib) as my footer.

I have assigned the file owner of the xib to FTHeaderFooterViewController.

I have definied a pointer called total to my label, where footerView points to my actual footer view.

    @interface FTHeaderFooterViewController : UITableViewController
    {
        IBOutlet UIView *footerView;

        __weak IBOutlet UILabel *total;
    }
    - (UIView *)footerView;

@implementation FTHeaderFooterViewController

-(UIView *)footerView
{
    if (!footerView) {
        [[NSBundle mainBundle] loadNibNamed:@"FTFooterView" owner:self options:nil];
    }
    return footerView;
}

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return [[self footerView] bounds].size.height;
}

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    return [self footerView];
}

That all works fine the footer shows.

However when I change the value for a label in :

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self drawFooter];
    [[self tableView] reloadData];
}

- (void)drawFooter
{
    NSString *totalStr = @"test";
    [total setText:totalStr];
}

The label doesn't get refreshed. What am I missing?

Upvotes: 1

Views: 912

Answers (1)

Thomas Keuleers
Thomas Keuleers

Reputation: 6115

2 Things:

1. You forgot to assign the footerview variable when you load the xib file

-(UIView *)footerView
{
    if (!footerView) {
        footerView = [[NSBundle mainBundle] loadNibNamed:@"FTFooterView" owner:self options:nil];
    }
    return footerView;
}

2. Your footerview method overrides default getter from the footerview IBOutlet property

-(UIView *)footerView 

Upvotes: 2

Related Questions