iOS

viewForHeaderInSection的一些坑

2018-05-23  本文已影响0人  哈利波特会魔法
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    NSArray *titles = @[@"个人信息设置", @"账户安全设置"];
    
    if (section == 0) {
        return titles[0];
    } else {
        return titles[1];
    }
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];

    view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 100);
    view.backgroundColor = [UIColor redColor];
    return view;
}

这2个方法同时设定,发现标题没有设置成功。
后来换了willDisplayHeaderView,是正常的

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    NSArray *titles = @[@"个人信息设置", @"账户安全设置"];
    
    if (section == 0) {
        return titles[0];
    } else {
        return titles[1];
    }
}

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
    header.textLabel.textAlignment=NSTextAlignmentCenter;
    header.contentView.backgroundColor = RGB(0xf8f8f8);
}

在使用 viewForHeaderInSection时,标题的设置要在里面设置,如下:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];

    view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 100);
    view.backgroundColor = [UIColor redColor];
    
    UILabel *label = [[UILabel alloc] init];
    
    label.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
    NSArray *titles = @[@"个人信息设置", @"账户安全设置"];
    label.text = titles[section];
    [view addSubview:label];
    return view;
}

**
注意:willDisplayHeaderViewviewForHeaderInSection,不能同时设置

上一篇下一篇

猜你喜欢

热点阅读