之前一直没有自定义过tableview的footerview,猛的,汪同学让我自定义下,还有点弱弱的,本来想问他的,后来觉得应该也是比较简单的。遂自己查了下,果然很简单。记录下,以备后续。
header通过下面两个代理方法设置 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section footer通过下面两个 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 如果要做整个tableview的header和footer,要通过tableview setHeaderView setFooterView
实例:
在tableview中的设置:
addTableViewFootView *view = [[addTableViewFootView alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
//view.backgroundColor = [UIColor redColor];
view.delegate = self;
[_myTableView setTableFooterView:view];
在tableview中实现代理方法:
(1)首先实现代理协议
(2)实现代理方法
-(void)myTabVAddClick:(UIButton *)btn
{
//1.点击的是全选按钮
if ([btn.titleLabel.text isEqualToString:@"全选"]) {
int m = 0;
int n = 0;
NSString * flag;
for(int i = 0;i <self.selected.count;i++){
flag = self.selected[i];
if ([flag isEqualToString:@"Y"]) {
//flag = @"N";
m++;
}else{
//flag = @"Y";
n++;
}
}
//如果选中了一些人,然后想全选
if (m >=0 && n>0) {
flag = @"Y";
for(int i = 0;i <self.selected.count;i++){
self.selected[i] = flag;
}
}
if (n == 0) {
flag = @"N";
for(int i = 0;i <self.selected.count;i++){
self.selected[i] = flag;
}
}
//刷新界面
[_myTableView reloadData];
}
//2.点击的是加入分组按钮---就将对应的人加入到对应的组中去
else{
//(1)判断分组名是否存在,存在才能插入
if(_groupTitleString.length <=0){
_hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
_hud.mode = MBProgressHUDModeText;
_hud.labelText = @"您还没有输入分组名";
_hud.margin = 10.f;
_hud.removeFromSuperViewOnHide = YES;
[_hud hide:YES afterDelay:1];
return;
}
//(2)将选中的人 的分组字段更新
AppDelegate *myAppDelegate = [[UIApplication sharedApplication]delegate];
if ([myAppDelegate.db open]) {
//打开成功
//记录加入组中的人数
int count = 0;
//查询该组在数据库中的id
NSString *ID;
if ([self.flag isEqualToString:@"add"]) {
FMResultSet *resultSet = [myAppDelegate.db executeQuery:@"select *from custom1013"];
while ([resultSet next]) {
//ID
ID = [resultSet stringForColumn:@"id"];
}
NSLog(@"当前组的id 是%@",ID);
}else{
ID = self.selectedId;
NSLog(@"当前组的id是%@",ID);
}
for(int i = 0; i<self.selected.count;i++){
NSString *flag = self.selected[i];
//1.选中的话,加入该分组
if ([flag isEqualToString:@"Y"]) {
NSString *myID = self.IDArray[i];
count++;
NSDate *date_one = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSString *updatedTime = [formatter stringFromDate:date_one ];
NSString *existsSql = [NSString stringWithFormat:@"update custom001 set reserve38 = '%@',updated_at = '%@' where id = '%@'", ID ,updatedTime, myID];
BOOL ok = [myAppDelegate.db executeUpdate:existsSql];
if (ok) {
NSLog(@"加入该分组成功");
}else{
NSLog(@"加入该分组失败");
}
}
//2.如果未选中的话,将对应字段设为空
if([flag isEqualToString:@"N"]){
if (!self.selectedId ) {
NSString *myID = self.IDArray[i];
NSDate *date_one = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSString *updatedTime = [formatter stringFromDate:date_one ];
NSString *existsSql = [NSString stringWithFormat:@"update custom001 set reserve38 = '%@',updated_at = '%@' where (id = '%@' and reserve38 = '%@' )", NULL ,updatedTime, myID,self.selectedId];
BOOL ok = [myAppDelegate.db executeUpdate:existsSql];
if (ok) {
NSLog(@"未选中,加入该分组成功");
}else{
NSLog(@"未选中,加入该分组失败");
}
}
}
}
//这边还需要将数量写入到对应的数据表中
NSDate *date_one = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSString *updatedTime = [formatter stringFromDate:date_one ];
//id 主键自增长
//sys_id
//status_id
//custom_id
//modifydate
//reserve1 分组名
//reserve2 成员数量 --暂时为0
//remark @"remark"
//update_sales
//created_at 创建时间
//updated_at 更新时间
//seller_id
NSString *countStr = [NSString stringWithFormat:@"%d",count];
NSString *existsSql = [NSString stringWithFormat:@"update custom1013 set reserve2 = '%@',updated_at = '%@' where id = '%@'",countStr,updatedTime,ID];
NSLog(@"sql is %@",existsSql);
BOOL ok = [myAppDelegate.db executeUpdate:existsSql];
if (ok) {
NSLog(@"分组数量加入成功");
}else{
NSLog(@"分组数量加入失败");
}
NSLog(@"开始跳转到前面");
[self.navigationController popViewControllerAnimated:YES ];
}else{
NSLog(@"添加通讯录人到分组时 数据库打开失败");
}
}
NSLog(@"btn的title是 %@",btn.titleLabel.text);
}
#import <UIKit/UIKit.h>
@protocol myTabAddVdelegate <NSObject>
-(void)myTabVAddClick:(UIButton *)btn;
@end
@interface addTableViewFootView : UIView
@property (nonatomic,strong) UIButton * cellSelectBtn;
@property (nonatomic,strong) UIButton * addBtn;
@property(assign,nonatomic)id<myTabAddVdelegate>delegate;
@end
.m文件
#import "addTableViewFootView.h"
@implementation addTableViewFootView
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//1.全部选中或者全部不选中
_cellSelectBtn = [[UIButton alloc]init];
_cellSelectBtn.backgroundColor = BTNBACKGROUNDCOLOR;
_cellSelectBtn.layer.masksToBounds = YES;
_cellSelectBtn.layer.cornerRadius = 5;
_cellSelectBtn.titleLabel.font = [UIFont systemFontOfSize:14.0];
[self addSubview:_cellSelectBtn];
[_cellSelectBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.centerY.equalTo(self.mas_centerY);
make.height.mas_equalTo(44);
make.width.mas_equalTo(140);
}];
//2.确定加入分组
_addBtn = [[UIButton alloc]init];
_addBtn.backgroundColor = BTNBACKGROUNDCOLOR;
_addBtn.layer.masksToBounds = YES;
_addBtn.layer.cornerRadius = 5;
_addBtn.titleLabel.font = [UIFont systemFontOfSize:14.0];
[self addSubview:_addBtn];
[_addBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-10);
make.centerY.equalTo(self.mas_centerY);
make.width.mas_equalTo(140);
make.height.mas_equalTo(44);
}];
[_addBtn setTitle:@"加入分组" forState:UIControlStateNormal];
[_cellSelectBtn setTitle:@"全选" forState:UIControlStateNormal];
[_cellSelectBtn addTarget:self action:@selector(btnclickedSelect) forControlEvents:UIControlEventTouchUpInside];
[_addBtn addTarget:self action:@selector(btnclicked) forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
- (void)awakeFromNib {
// Initialization code
}
-(void)btnclickedSelect{
NSLog(@"全选按钮被点击");
[self.delegate myTabVAddClick:_cellSelectBtn];
}
-(void)btnclicked
{
NSLog(@"加入分组按钮被点击");
[self.delegate myTabVAddClick:_addBtn];
}