1

フッターとしてビュー (xib) を作成しました。

xib のファイル所有者を に割り当てましたFTHeaderFooterViewController

実際のフッター ビューを指すtotal、ラベルに呼び出されるポインターを定義しました。footerView

    @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];
}

フッターが示すように、すべて正常に機能します。

ただし、ラベルの値を変更すると:

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

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

ラベルは更新されません。私は何が欠けていますか?

4

1 に答える 1

2

2 つのこと:

1. xib ファイルをロードするときに footerview 変数を割り当てるのを忘れた

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

2. footerview メソッドは、footerview IBOutlet プロパティのデフォルトの getter をオーバーライドします

-(UIView *)footerView 
于 2013-11-06T13:44:43.230 に答える