UITableView_6-团购实例,刷新数据,代理实现,GCD方法使用



//  TGtgfootview.h=======================

//  TG团购

//

//  Created by Toge on 6/5/15.

//  Copyright (c) 2015 wxhl. All rights reserved.

//


#import <UIKit/UIKit.h>

@class TGtgfootview;

//协议名是类名加Delegate,方便其他人使用

@protocol TGtgfootviewDelegate <NSObject>

//可选的方法类型

@optional

//方法名以类名去除前缀开始,最好可以描述清楚要做的事情,最后还要把自己作为参数使调用着知道是谁在调用,避免当方法名重名时可以区分

- (void)tgfootviewDidClicloadButton:(TGtgfootview *)tgfootview;


@end


@interface TGtgfootview : UIView

//定义代理属性

@property (nonatomic,weak) id <TGtgfootviewDelegate> delegate;


+ (instancetype)footView;


@end


//  TGtgfootview.m====================================

//  TG团购

//

//  Created by Toge on 6/5/15.

//  Copyright (c) 2015 wxhl. All rights reserved.

//


#import "TGtgfootview.h"


@interface TGtgfootview()

@property (weak, nonatomic) IBOutlet UIView *loadingView;

@property (weak, nonatomic) IBOutlet UIButton *loadBtb;


- (IBAction)loadButton:(UIButton *)sender;


@end


@implementation TGtgfootview


+ (instancetype)footView

{

    return [[[NSBundle mainBundle] loadNibNamed:@"TGtgfootView" owner:nil options:nil] lastObject];

}


//点击加载按钮的实现

- (IBAction)loadButton:(UIButton *)sender {

//    隐藏加载按钮并且现实正在加载

    self.loadBtb.hidden = YES;

    self.loadingView.hidden = NO;

//    加载更多数据,由于数据在控制器类中所以加载数据最好是在控制器中实现,所以需要设置代理

//    此方法延迟执行某些代码

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        //调用代理方法

        [self.delegate tgfootviewDidClicloadButton:self];

        //    显示加载更多按钮

        self.loadBtb.hidden = NO;

        //    隐藏玩命加载试图

        self.loadingView.hidden = YES;

    });

}

@end


//  ViewController.m=============================

//  TG团购

//

//  Created by Toge on 6/5/15.

//  Copyright (c) 2015 wxhl. All rights reserved.

//


#import "ViewController.h"

#import "TGtg.h"

#import "TGtgCell.h"

#import "TGtgfootview.h"


@interface ViewController ()<UITableViewDataSource,TGtgfootviewDelegate>

@property (weak, nonatomic) IBOutlet UITableView *tableView;


@end


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //定义所有行的宽

    self.tableView.rowHeight = 80;

    /**

     *在表示图的footerview上添加按钮

     */

    //第一种方式

//    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

//    btn.frame = CGRectMake(0, 0, 0, 44);

//    btn.backgroundColor = [UIColor orangeColor];

//    [btn setTitle:@"加载更多数据" forState:UIControlStateNormal];

    //第二种方式

//    NSString *path = [[NSBundle mainBundle] pathForResource:@"TGtgfootView.xib" ofType:nil];

//    UIView  *footView = [[NSArray arrayWithContentsOfFile:path] lastObject];

    //读取nib文件

//    UINib *nib = [UINib nibWithNibName:@"TGtgfootView" bundle:nil];

//    UIView *footView = [[nib instantiateWithOwner:nil options:nil] lastObject];

    //第二种方式的延伸,nib文件的加载封装到view中,view中提供返回view的方法如下

//    self.tableView.tableFooterView = [TGtgfootview footView];

//    第三种方式使用tag值,此种方式太垃圾

    //第四种方式,封装view,此处使用到代理,要遵守代理协议TGtgfootviewDelegate

    TGtgfootview *footView = [TGtgfootview footView];

    footView.delegate = self;

    self.tableView.tableFooterView = footView;

}


//TGfootviewDelegate协议的实现,加载数据

- (void)tgfootviewDidClicloadButton:(TGtgfootview *)tgfootview

{

//    此处先使用手动添加的数据

    TGtg *tg = [[TGtg alloc] init];

    tg.icon =@"ad_01";

    tg.title = @"新添加的数据";

    tg.price = @"200";

    tg.buyCount = @"3333";

    

    [self.tgs addObject:tg];

//    重新加载表示图上的数据

    [self.tableView reloadData];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值