用MJ 刷新加载
2015-10-30 09:04
267 查看
#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
#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
相关文章推荐
- 第九周项目1-猴子选大王 数组版
- C# ADO.NET访问SQL Server数据库<转>
- nyoj 82 迷宫寻宝(一)
- 顺序串
- 第8周项目2 建立链串的算法库
- 第八周项目4-字符串加密
- 第九周项目3——稀疏矩阵三元组表示的实现与应用(1)
- 无题
- 第8周项目2建立链串的算法库
- c++boost中的asio介绍
- 【mysql】重置密码的方法
- 4:登录知乎后爬取首页问题
- 第九周 项目3 稀疏矩阵的三元组表示的实现及应用(矩阵相加)
- 水上升下降抵消题(Problem ID:1049)
- 浅谈android事件分发机制
- 【mysql】报错解决方案The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
- spring mvc中的@PathVariable
- 第9周 项目1-猴子选大王(数组版)
- 第七周项目4队列数组
- 导航软件后台播放语音有杂音,卡顿