IOS下拉刷新 上拉加载(内容比较老)

1.实现功能:实现下拉刷新 上拉加载(系统SDK提供不够全面)
2.实现原理:通过EGOTableViewPullReFresh的代理方法方法


pragma mark - PullTableViewDelegate

  1. (void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView {
    [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0f]; }

  2. (void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView {
    [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:3.0f]; }`

#pragma mark - Refresh and load more methods

  • (void) refreshTable {
    /*

    Code to actually refresh goes here.

    */
    self.pullTableView.pullLastRefreshDate = [NSDate date];
    self.pullTableView.pullTableIsRefreshing = NO; }

  • (void) loadMoreDataToTable {
    /*

    Code to actually load more data goes here.

    */
    self.pullTableView.pullTableIsLoadingMore = NO; }

来刷新和加载数据

3.使用方法

导入包EGORefreshTableViewPullRefresh
用xib文件画一个tableview 把Class更改为pulltableview

连接tableview的datasource协议 和pulltableview的delegate并且连接到viewController中这里写图片描述

在ViewController中
在.h文件中定义一个全局变量(在Xcode6.3中自动为Arc 所以这个变量用__weak修饰)

#import <UIKit/UIKit.h>
#import "PullTableView.h"
@interface MainViewController : UIViewController<UITableViewDataSource,PullTableViewDelegate>
{
   __weak PullTableView *pullTableView;
}
@property (weak, nonatomic) IBOutlet PullTableView *pullTableView;

@end

在.m文件中实现代理方法和datasource方法

#pragma  mark- UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 10;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if(!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"Row %li", (long)indexPath.row];

    return cell;
}


- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [NSString stringWithFormat:@"Section %li begins here!", (long)section];
}

- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return [NSString stringWithFormat:@"Section %li ends here!", (long)section];

}
#pragma mark - PullTableViewDelegate
- (void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView
{
    [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0f];
}

- (void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView
{
    [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:3.0f];
}
#pragma mark - Refresh and load more methods

- (void) refreshTable
{
    /*

     Code to actually refresh goes here.

     */
    self.pullTableView.pullLastRefreshDate = [NSDate date];
    self.pullTableView.pullTableIsRefreshing = NO;
}

- (void) loadMoreDataToTable
{
    /*

     Code to actually load more data goes here.

     */
    self.pullTableView.pullTableIsLoadingMore = NO;
}

当然我们可以自定义刷新和加载的图标和文字
修改刷新和加载的图标和文字

- (void)viewDidLoad {
    [super viewDidLoad];
    self.pullTableView.pullArrowImage = [UIImage imageNamed:@"blackArrow"];
    self.pullTableView.pullBackgroundColor = [UIColor purpleColor];
    self.pullTableView.pullTextColor = [UIColor blackColor];
}

默认是英文的显示内容 我们可以在框架中的

    _statusLabel.text = NSLocalizedStringFromTable(@"Release to refresh...",@"PullTableViewLan", @"Release to refresh status");

中修改成我们想要的文字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值