标签:
一.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)
1.下拉刷新
#pragma mark ---集成下*拉刷新控件
-(void)setupDownRefresh
{
//1.添加刷新控件
UIRefreshControl *control = [[UIRefreshControl alloc] init];
//只有用户通过手动下拉刷新,才会触发UIControlEventValueChanged事件
[control addTarget:self action:@selector(refreshStateChange:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:control];
//2.马上进入刷新状态(仅仅是显示刷新状态 并不会触发UIControlEventValueChanged事件)
[control beginRefreshing];
//3.马上加载数据
[self refreshStateChange:control];
}
#pragma mark ---集成下拉刷新控件的addTargat/action方法
-(void)refreshStateChange:(UIRefreshControl *)control
{
//1.请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
//2.拼接请求参数
AccountModel *account = [AccountTool account];
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"access_token"] = account.access_token;
//取出最前面的微博,(最新的微博 , ID最大的微博)
StatusFrame *firstStatusf = [self.statusFrames firstObject];
if (firstStatusf) {
// 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
params[@"since_id"] = firstStatusf.status.idstr;
}
//3.发送请求
[mgr GET:@"https://api.weibo.com/2/statuses/friends_timeline.json" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) {
//将"微博字典"数组 转为 "微博模型"数组
NSArray *newsStatuses = [StatusModel objectArrayWithKeyValuesArray:responseObject[@"statuses"]];
//将HWStatus模型转为HWStatusFrame模型
NSArray *newFrames = [self stausFramesWithStatuses:newsStatuses];
//将最新的微博数据,添加到总数组的最前面
NSRange range = NSMakeRange(0, newFrames.count);
NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:range];
[self.statusFrames insertObjects:newFrames atIndexes:set];
//刷新表格
[self.tableView reloadData];
//结束刷新
[control endRefreshing];
//显示最新的微博数量
[self showNewStatusCount:newsStatuses.count];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"请求失败--%@",error);
//结束刷新
[control endRefreshing];
}];
}
----------------------------------------------------------------------------------------------------------
-----------------------------------------------------
2.上拉加载数据
#pragma mark ---集成上*拉刷新控件
-(void)setupUprefresh
{
LoadMoreFooter *footer = [LoadMoreFooter footer];
self.tableView.tableFooterView = footer;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.tableView.frame];
//调用上拉加载的方法*************
[self scrollViewDidScroll:scrollView];
footer.hidden = YES;
}
#pragma mark ---加载更多的微博数据 (上拉加载以前数据时使用)
-(void)loadMoreStatus
{
//1.请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
//2.拼接请求参数
AccountModel *account = [AccountTool account];
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"access_token"] = account.access_token;
//取出最前面的微博,(最新的微博 , ID最大的微博)
StatusFrame *lastStatusf = [self.statusFrames lastObject];
if (lastStatusf) {
// 若指定此参数,则返回ID比since_id大的微博(即比since_id时间晚的微博),默认为0
long long maxId = lastStatusf.status.idstr.longLongValue - 1;
params[@"max_id"] = @(maxId);
}
//3.发送请求
[mgr GET:@"https://api.weibo.com/2/statuses/friends_timeline.json" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) {
//将"微博字典"数组 转为 "微博模型"数组
NSArray *newsStatuses = [StatusModel objectArrayWithKeyValuesArray:responseObject[@"statuses"]];
//将HWStatus模型转为HWStatusFrame模型
NSArray *newFrames = [self stausFramesWithStatuses:newsStatuses];
//将更多的数据添加到中数组的最后面
[self.statusFrames addObjectsFromArray:newFrames];
//刷新表格
[self.tableView reloadData];
//结束刷新(隐藏footer)
self.tableView.tableFooterView.hidden = YES;
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"请求失败--%@",error);
//结束刷新
self.tableView.tableFooterView.hidden = YES;
}];
}
新浪微博项目---首页技术点三.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)
标签:
原文地址:http://www.cnblogs.com/erdeng/p/4925570.html