上拉刷新和下拉刷新

来源:互联网 发布:熊出没之淘宝熊兵 编辑:程序博客网 时间:2024/04/28 11:00

首先,用到的第三方库是EGOTableViewPullRefresh,需要手动添加到工程

下拉刷新

第一步,定义两个bool值的成员变量和三个方法    .h中

    BOOL _pullDown;//代表当前tableView是否使用下拉刷新

    BOOL _isRefresh;//代表是否正在下拉刷新

//是否使用下拉刷新

-(void)setPulldownfresh:(BOOL)isRefresh;

//触发下拉刷新

-(void)pullDownRefresh;

//结束下拉刷新

-(void)endPullDownRefresh;


第二步, .m中包含ego头文件,遵守协议EGORefreshTableHeaderDelegate,定义ego成员变量

EGORefreshTableHeaderView *_refreshView;


//下拉刷新

-(void)setPulldownfresh:(BOOL)isRefresh

{

   _pullDown = isRefresh;

   if (isRefresh) {

       _refreshView = [[EGORefreshTableHeaderViewalloc] initWithFrame:CGRectMake(0, -460,320, 460)];

        _refreshView.delegate =self;

        [_tableViewaddSubview:_refreshView];

        [_refreshViewrelease];

    }else{

       if (_refreshView) {

            [_refreshViewremoveFromSuperview];

           _refreshView = nil;

        }

    }

}


#pragma mark-

#pragma mark scrollView的代理方法

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    [_refreshViewegoRefreshScrollViewDidEndDragging:scrollView];

}


-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    [_refreshViewegoRefreshScrollViewDidScroll:scrollView];

}


#pragma mark-

#pragma mark ego代理方法

-(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view

{

    return [NSDate date];

}

//是否正在刷新

-(BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view

{

    return_isRefresh;

}

//触发下拉刷新

-(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view

{

    _isRefresh = YES;

    [selfpullDownRefresh];

}


#pragma mark-

#pragma mark 下拉刷新方法

//开始下拉刷新

-(void)pullDownRefresh

{

    

}

//结束下拉刷新

-(void)endPullDownRefresh

{

    [_refreshViewegoRefreshScrollViewDataSourceDidFinishedLoading:_tableView];

    _isRefresh = NO;

}



上拉刷新

1、.h 

BOOL _pullUp;//代表当前tableView是否使用上拉刷新

//是否使用上拉刷新

-(void)setPullUpRefresh:(BOOL)isRefresh;

//触发上拉刷新

-(void)pullUpRefresh;


2、.m

#pragma mark-

#pragma mark scrollView的代理方法

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    [_refreshViewegoRefreshScrollViewDidEndDragging:scrollView];

    //上拉刷新实现

   if (_pullUp && scrollView.frame.size.height + scrollView.contentOffset.y > scrollView.contentSize.height +50) {

        [selfpullUpRefresh];

    }

}


#pragma mark-

#pragma mark 上拉刷新

//是否使用上拉刷新

-(void)setPullUpRefresh:(BOOL)isRefresh

{

   _pullUp = isRefresh;

}


//触发上拉刷新

-(void)pullUpRefresh

{

    

}


在代码中,进行下拉和上拉操作


- (void)viewDidLoad

{

    [superviewDidLoad];

   _page = 1;

    [selfsetUrl];

    [selfstartRequest];

    //添加下拉刷新

    [selfsetPulldownfresh:YES];

    //添加上拉刷新

    [selfsetPullUpRefresh:YES];

}

//触发下拉刷新

-(void)pullDownRefresh

{

   _page = 1;

    [selfsetUrl];

    [selfstartRequest];

}

//触发上拉刷新

-(void)pullUpRefresh

{

   _page++;

    [selfsetUrl];

    [selfstartRequest];

}


-(void)setUrl

{

    self.url = [NSStringstringWithFormat:@"http://iappfree.candou.com:8080/free/applications/limited?page=%d&number=20",_page];

}


-(void)startRequest

{

    [QFHTTPMangerrequestWithURL:self.urlFinishBlock:^(NSData *data) {

       //如果下拉刷新,清空数组

       if (_isRefresh) {

            [_dataArrayremoveAllObjects];

        }

        NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:dataoptions:0error:nil];

       NSArray *applications = dic[@"applications"];

       for (NSDictionary *appDicin applications) {

           AppModel *appModel = [[AppModelalloc] init];

           //kvc 

            [appModelsetValuesForKeysWithDictionary:appDic];

            [_dataArrayaddObject:appModel];

            [appModelrelease];

        }

        [_tableViewreloadData];

       //结束下拉刷新

       if (_pullDown) {

            [selfendPullDownRefresh];

        }

    } FailedBlock:^{

       NSLog(@"请求失败");

    }];

}






0 0
原创粉丝点击