用MJ 刷新加载

来源:互联网 发布:php 记log日志 编辑:程序博客网 时间:2024/05/08 11:14

#import "Team9RefreshTool.h"

#import <MJRefresh/MJRefresh.h>

#import "JQAFNetworkTool.h"

#import "Team9EmptyTool.h"

#import <MBProgressHUD.h>


@interface Team9RefreshTool ()


@property(nonatomic,assign) NSInteger page;

@property(nonatomic,strong) NSString *url;

@property(nonatomic,copy) NSString *orignUrl;

@property(nonatomic,strong) NSMutableArray *array;



@end

@implementation Team9RefreshTool

/*

 申请数据有两个共同点

 解析的类型的方法一样

 url page++

 把数据解析的部分取出来

 把数据的总数组返回

 刷新和加载对数组的处理在这里内部完成

 url page array 记录数据

 */

- (instancetype)initWithScrollView:(UIScrollView *)scrollView

                               url:(NSString *)url

                           style:(NSArray *(^)(id result))style

                           refresh:(void(^)(NSArray *array))refresh

                             empty:(Team9EmptyTool *)empty

{

    self = [super init];

    if (self) {

        self.orignUrl = url;

        refresh([NSArray array]);

        [scrollView.footer resetNoMoreData];

        void(^block)() = ^{

            scrollView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{

                NSRange range = [self.url rangeOfString:[NSString stringWithFormat:@"page=%ld",self.page]];

                if (!range.length) {

                    [scrollView.footer endRefreshingWithNoMoreData];

                    return;

                }

                self.url = [self.url stringByReplacingCharactersInRange:range withString:[NSString stringWithFormat:@"page=%ld",self.page + 1]];

                [JQAFNetworkTool getUrl:self.url success:^(id result) {

                    NSArray *array = style(result);

                    if (array.count) {

                        [self.array addObjectsFromArray:array];

                        array = [NSArray arrayWithArray:self.array];

                        refresh(array);

                        //                    completion(array);

                        self.page++;

                        [scrollView.footer endRefreshing];

                    } else {

                        [scrollView.footer endRefreshingWithNoMoreData];

                    }

                }failure:^(NSError *error) {

                    [scrollView.header endRefreshing];

                }];

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

                    [scrollView.footer endRefreshing];

                });

            }];

        };

        [JQAFNetworkTool getUrl:self.orignUrl success:^(id result) {

            NSArray *array = style(result);

            self.array = array.mutableCopy;

            refresh(array);

            block();

            }];

   

        scrollView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{

            empty.loading = YES;

            [scrollView.footer resetNoMoreData];

            [JQAFNetworkTool getUrl:self.orignUrl success:^(id result) {

                NSArray *array = style(result);

                self.array = array.mutableCopy;

                refresh(array);

                self.page = 1;

                self.url = self.orignUrl;

                [scrollView.header endRefreshing];

                block();

            } failure:^(NSError *error) {

                [scrollView.header endRefreshing];

            }];

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

                [scrollView.header endRefreshing];

            });

        }];

       

    }

    return self;

}

+ (Team9RefreshTool *)toolWithScrollView:(UIScrollView *)scrollView

                                     url:(NSString *)url

                                   style:(NSArray *(^)(id result))style

                                 refresh:(void(^)(NSArray *array))refresh

                                   empty:(Team9EmptyTool *)empty{

    Team9RefreshTool *tool = [[Team9RefreshTool alloc] initWithScrollView:scrollView url:url style:style refresh:refresh empty:empty];

    return tool;

}

- (void)setOrignUrl:(NSString *)orignUrl

{

    if (_orignUrl != orignUrl) {

        _orignUrl = orignUrl;

    }

    self.page = 1;

    self.url = self.orignUrl;

}

+ (void)getUrl:(NSString *)url

         success:(void (^)(id result))success

      scrollView:(UIScrollView *)scrollView

         empty:(Team9EmptyTool *)empty{

    [JQAFNetworkTool getUrl:url success:^(id result) {

        success(result);

    }];

    scrollView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{

        empty.loading = YES;

        [JQAFNetworkTool getUrl:url success:^(id result) {

            success(result);

            [scrollView.header endRefreshing];

        }];

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

            [scrollView.header endRefreshing];

        });

    }];

    

}

@end


0 0
原创粉丝点击