標籤:
一.上拉重新整理,下拉載入的實現(使用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內建的小菊花實現)