iOS tableView设置Header&Footer

2018-08-04  本文已影响1060人  iOS_July

前言:
也许大家会觉得,有了MJ,HeaderFooter有难度?还需要再自己动手弄?
enmmmmm......其实吧,就算不用MJ,也很简单,就两个代理方法而已。
虽然有很多大神,写了很多优秀的开源框架,但是原生的东西,虽然“笨了”一点儿,但是了解一下也是没毛病的。
而且,存在即真理嘛,既然存在,那么就一定是有一定道理的,有些时候也可以用到。
直接看效果图吧:

customView.gif

设置Header:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{}

设置Footer:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{}

没错,就是这么几个代理方法

主要代码部分(真的很简单)

#pragma mark - 自定义headerView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, HeaderHeight)];
    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, HeaderHeight)];
    lab.text = [NSString stringWithFormat:@"----我是%@header呀---",self.sectionArray[section]];
    lab.textAlignment = NSTextAlignmentCenter;
    [header addSubview:lab];
    header.backgroundColor = [UIColor blueColor];
    
    return header;
    
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    
    return HeaderHeight;
}
#pragma mark - 自定义footerView
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    
    return FooterHeight;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    
    UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, FooterHeight)];
    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, FooterHeight)];
    lab.text = [NSString stringWithFormat:@"----我是%@footer呀---",self.sectionArray[section]];
    lab.textAlignment = NSTextAlignmentCenter;
    [footer addSubview:lab];
    footer.backgroundColor = [UIColor brownColor];
    
    return footer;
}

全部代码部分:

#import "JHCustomTableVC.h"

#define SCREEN_WIDTH   [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT  [UIScreen mainScreen].bounds.size.height
@interface JHCustomTableVC ()<UITableViewDelegate,UITableViewDataSource>
/// tableView
@property (strong, nonatomic) UITableView *tableView;
/** section*/
@property (nonatomic, strong) NSMutableArray * sectionArray;
/** row*/
@property (nonatomic, strong) NSMutableArray * rowArray;
@end

static NSString *cellID = @"JHCustomTableVCCell";
static CGFloat FooterHeight = 30;
static CGFloat HeaderHeight = 60;

@implementation JHCustomTableVC

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setupUI];
    
    [self getData];
}

- (void)getData{
    _sectionArray = [[NSMutableArray alloc]init];
    [_sectionArray addObjectsFromArray:@[@"第一组",@"第二组",@"第三组"]];
    
    _rowArray = [[NSMutableArray alloc]init];
    [_rowArray addObjectsFromArray:@[@"第一行",@"第二行",@"第三行"]];
    
    [self.tableView reloadData];
}
- (void)setupUI{
    
    self.title = @"header & footer";
    self.view.backgroundColor = [UIColor colorWithRed:242/250.0 green:243/250.0 blue:240/250.0 alpha:1];
    
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-64-44) style:UITableViewStylePlain];
    self.tableView.backgroundColor = [UIColor colorWithRed:242/250.0 green:243/250.0 blue:240/250.0 alpha:1];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    [self.view addSubview:self.tableView];
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.sectionArray.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 100;
}

- (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    
    return self.rowArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
        }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.textLabel.text = self.rowArray[indexPath.row];
    return cell;
}




#pragma mark - 自定义headerView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, HeaderHeight)];
    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, HeaderHeight)];
    lab.text = [NSString stringWithFormat:@"----我是%@header呀---",self.sectionArray[section]];
    lab.textAlignment = NSTextAlignmentCenter;
    [header addSubview:lab];
    header.backgroundColor = [UIColor blueColor];
    
    return header;
    
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    
    return HeaderHeight;
}
#pragma mark - 自定义footerView
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    
    return FooterHeight;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    
    UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, FooterHeight)];
    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, FooterHeight)];
    lab.text = [NSString stringWithFormat:@"----我是%@footer呀---",self.sectionArray[section]];
    lab.textAlignment = NSTextAlignmentCenter;
    [footer addSubview:lab];
    footer.backgroundColor = [UIColor brownColor];
    
    return footer;
}





@end


需要注意一点:
当你有多个tableView的时候,你需要判断当前tableView是不是你想要加Header或者Footer的tableView,从而进行添加

结束语:
最近呢,终于算是把项目的bug改完了,来新公司也半个月了。说实话,这半个月是真的漫长呀~~~~
希望慢慢走上正轨,不管生活,还是工作。
同时,希望自己的学习计划不要搁浅,哈哈哈哈2333333......

上一篇下一篇

猜你喜欢

热点阅读