iOS 下拉刷新效果

本文介绍了如何在iOS应用中实现下拉刷新效果,通过使用EGOTableViewPullRefresh第三方库,详细讲解了导入libsqlite3.0.dylib库的必要性以及在ViewController中设置下拉刷新的步骤。

我们在这里使用EGOTableViewPullRefresh第三方库来实现iOS 列表下拉刷新效果

导入libsqlite3.0.dylib,不然编译有错误

我们在上次的项目文件中做进一步修改 iOS 使用ASIHttpRequest和GData解析xml网络文件

ViewController头文件

#import <UIKit/UIKit.h>
#import "ASIHTTPRequestDelegate.h"
#import "EGORefreshTableHeaderView.h"

@interface ViewController : UIViewController<ASIHTTPRequestDelegate,UITableViewDelegate,UITableViewDataSource,EGORefreshTableHeaderDelegate>
{
    ASIHTTPRequest *_request;
    UITableView *_myTableView;
    NSMutableDictionary *_dic;
    NSMutableDictionary *_isReadeds;
    NSMutableArray *_dataArr;
    
    // ----------
    BOOL shouldLoading;
    BOOL isLoading;
    
    // 上拉刷新
    EGORefreshTableHeaderView *refreshView;
    BOOL isRefresh;
}
@property (nonatomic,retain) UITableView *_myTableView;
- (void)sendASIHttpRequest;
@end

在viewDidLoad方法中加入以下代码

// 加入refreshView;
    CGRect refreshRect = CGRectMake(0.0f,
                                    0.0f-_myTableView.bounds.size.height,
                                    _myTableView.bounds.size.width,
                                    _myTableView.bounds.size.height);
    refreshView = [[EGORefreshTableHeaderView alloc] initWithFrame:refreshRect];
    refreshView.delegate = self;
    [_myTableView addSubview:refreshView];
    /* 刷新一次数据 */
    [refreshView refreshLastUpdatedDate];

实现以下协议方法

#pragma mark -
#pragma mark Third
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidEndDecelerating %d", shouldLoading);
    
    if (shouldLoading) {
        //[self loadingBooks];
        [self sendASIHttpRequest];
    }
}

/* 手指离开屏幕 */
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"scrollViewDidEndDragging");
//    CGFloat aHeight = scrollView.frame.size.height;
    NSLog(@"contentoffset.y = %f",scrollView.contentOffset.y);
    if (scrollView.contentOffset.y < -65) {
        shouldLoading = YES;
    } else {
        shouldLoading = NO;
    }
    
    [refreshView egoRefreshScrollViewDidEndDragging:scrollView];
}

// 下拉刷新

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    /* 通知一下refreshView */
    [refreshView egoRefreshScrollViewDidScroll:scrollView];
    /* 调用refreshView中的scrollViewDidScroll方法 */
}

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view
{
    /* 开始更新代码放在这里 */
    isRefresh = YES;
    /* 实现更新代码 */
    [self sendASIHttpRequest];
    //[self loadingBooks];
}
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view
{
    /* 返给refreshView是否正在更新 */
    return isRefresh;
}
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view
{
    /* refresh更新完成会调用该方法 设置更新时间 */
    return [NSDate date];
}

在requestFinished方法中加入以下代码

isLoading = NO;
    
    // 下拉刷新
    isRefresh = NO;
    [refreshView egoRefreshScrollViewDataSourceDidFinishedLoading:_myTableView];

完成下拉刷新效果














评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值