iOS中tableView组头部或尾部标题的设置

时间:2023-12-11 21:16:02

解决在tableView返回组标题直接返回字符串,带来的不便设置组标题样式的问题解决办法,设置尾部标题和此类似


 // 返回组头部view的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    return 20;
}
 
//返回每组头部view  - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UIView *headerView = [[UIView alloc]init];
    headerView.backgroundColor = [UIColor groupTableViewBackgroundColor];
    UILabel *label = [[UILabel alloc]init];
    label.textColor = [UIColor grayColor];
    label.font = [UIFont systemFontOfSize:13];
    label.frame = CGRectMake(15, 0, 100, 20);
    [headerView addSubview:label];
   if (section == 0) {
        label.text = @"第0组title";
    }else{
        label.text = @"第1组title";
    }
    return headerView;
}

封装 UITableViewHeaderFooterView 也像tableViewCell一样也可以循环利用  自定义 UITableViewHeaderFooterView


+ (instancetype)headerFooterViewWithTabelView:(UITableView *)tableView{
    BSHeaderFooterView *headerFooterView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:headerIdentifier];
    if (headerFooterView == nil) {
        headerFooterView = [[BSHeaderFooterView alloc]initWithReuseIdentifier:headerIdentifier];
    }
    return headerFooterView;
}

 - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{
    if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
            self.contentView.backgroundColor = [UIColor groupTableViewBackgroundColor];
            UILabel *label = [[UILabel alloc]init];
            label.textColor = [UIColor grayColor];
            label.font = [UIFont systemFontOfSize:13];
            label.frame = CGRectMake(13, 0, 100, 20);
            [self addSubview:label];
            self.label = label;
    }
        return self;
}
 
//接收外界传进来的字符串并赋值 - (void)setTitle:(NSString *)title{
    _title = [title copy];
    self.label.text = title;
}
 
//返回组头部view方法 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    BSHeaderFooterView *headerFooter = [BSHeaderFooterView headerFooterViewWithTabelView:tableView];
    if (section == 0) {
        headerFooter.title = @"第0组title";
    }else{
        headerFooter.title = @"第1组title";
    }
    return headerFooter;
}