Skip to content

Commit 2d3ff1f

Browse files
committed
话题冒泡列表添加分页处理
1 parent 042ccd1 commit 2d3ff1f

3 files changed

Lines changed: 41 additions & 48 deletions

File tree

Coding_iOS/Controllers/Topic/CSTopicDetailVC.m

Lines changed: 34 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#import "TweetDetailViewController.h"
2323
#import "CSTopicDetailVC.h"
2424
#import "WebViewController.h"
25+
#import "SVPullToRefresh.h"
26+
#import "ODRefreshControl.h"
2527

2628
#define kCommentIndexNotFound -1
2729

@@ -40,7 +42,7 @@ @interface CSTopicDetailVC ()<UITableViewDataSource,UITableViewDelegate,UIScroll
4042
@property (nonatomic, strong) User *commentToUser;
4143

4244
@property (nonatomic, assign) NSInteger curIndex;
43-
45+
@property (nonatomic, strong) ODRefreshControl *refreshControl;
4446
@end
4547

4648
@implementation CSTopicDetailVC{
@@ -50,35 +52,42 @@ @implementation CSTopicDetailVC{
5052
- (void)viewDidLoad {
5153
[super viewDidLoad];
5254

55+
_curIndex = 0;
5356
[self setupData];
5457
[self setupUI];
55-
56-
_curIndex = 0;
57-
58+
_refreshControl = [[ODRefreshControl alloc] initInScrollView:self.myTableView];
59+
[_refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
60+
5861
[self.myTableView reloadData];
62+
__weak typeof(self) weakSelf = self;
63+
[self.myTableView addInfiniteScrollingWithActionHandler:^{
64+
[weakSelf sendRequestLoadMore:YES];
65+
}];
66+
[self refresh];
67+
}
68+
69+
- (void)refresh{
5970
[self refreshheader];
6071
[self refreshTopTweet];
61-
62-
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
63-
dispatch_after(popTime, dispatch_get_main_queue(), ^{
64-
[self sendRequest];
65-
});
66-
72+
[self sendRequestLoadMore:NO];
6773
}
6874

69-
- (void)sendRequest{
75+
- (void)sendRequestLoadMore:(BOOL)loadMore{
76+
if (_curTweets.isLoading) {
77+
return;
78+
}
79+
_curTweets.willLoadMore = loadMore;
80+
_curTweets.isLoading = YES;
7081
__weak typeof(self) weakSelf = self;
71-
72-
[[Coding_NetAPIManager sharedManager] request_PublicTweetsWithTopic:_topicID andBlock:^(NSArray *datalist, NSError *error) {
73-
NSMutableArray *list = [NSMutableArray array];
74-
[datalist enumerateObjectsUsingBlock:^(Tweet* obj, NSUInteger idx, BOOL *stop) {
75-
if (self.curTopWteet && [self.curTopWteet.id isEqualToNumber:obj.id]) {
76-
77-
}else{
78-
[list addObject:obj];
79-
}
80-
}];
81-
[weakSelf.curTweets configWithTweets:list];
82+
NSNumber *last_id = nil;
83+
if (_curTweets.willLoadMore && _curTweets.list.count > 0) {
84+
last_id = [(Tweet *)_curTweets.list.lastObject id];
85+
}
86+
[[Coding_NetAPIManager sharedManager] request_PublicTweetsWithTopic:_topicID last_id:last_id andBlock:^(NSArray *datalist, NSError *error) {
87+
[weakSelf.refreshControl endRefreshing];
88+
[weakSelf.myTableView.infiniteScrollingView stopAnimating];
89+
weakSelf.curTweets.isLoading = NO;
90+
[weakSelf.curTweets configWithTweets:datalist];
8291
[weakSelf.myTableView reloadData];
8392
}];
8493
}
@@ -297,9 +306,6 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
297306
}
298307
}
299308

300-
301-
302-
303309
#pragma mark UIMessageInputViewDelegate
304310
- (void)messageInputView:(UIMessageInputView *)inputView sendText:(NSString *)text{
305311
[self sendCommentMessage:text];
@@ -408,31 +414,16 @@ - (void)setupData {
408414
}
409415

410416
- (void)sendTweet{
411-
// __weak typeof(self) weakSelf = self;
417+
__weak typeof(self) weakSelf = self;
412418
TweetSendViewController *vc = [[TweetSendViewController alloc] init];
413419
vc.sendNextTweet = ^(Tweet *nextTweet){
414420
[nextTweet saveSendData];//发送前保存草稿
415421
[[Coding_NetAPIManager sharedManager] request_Tweet_DoTweet_WithObj:nextTweet andBlock:^(id data, NSError *error) {
416422
if (data) {
417423
[Tweet deleteSendData];//发送成功后删除草稿
418-
// Tweets *curTweets = [weakSelf getCurTweets];
419-
// if (curTweets.tweetType != TweetTypePublicHot) {
420-
// Tweet *resultTweet = (Tweet *)data;
421-
// resultTweet.owner = [Login curLoginUser];
422-
// if (curTweets.list && [curTweets.list count] > 0) {
423-
// [curTweets.list insertObject:data atIndex:0];
424-
// }else{
425-
// curTweets.list = [NSMutableArray arrayWithObject:resultTweet];
426-
// }
427-
// [self.myTableView reloadData];
428-
// }
429-
// [weakSelf.view configBlankPage:EaseBlankPageTypeTweet hasData:(curTweets.list.count > 0) hasError:(error != nil) reloadButtonBlock:^(id sender) {
430-
// [weakSelf sendRequest];
431-
// }];
424+
[weakSelf refresh];
432425
}
433-
434426
}];
435-
436427
};
437428
UINavigationController *nav = [[BaseNavigationController alloc] initWithRootViewController:vc];
438429
[self.parentViewController presentViewController:nav animated:YES completion:nil];
@@ -448,7 +439,7 @@ - (void)deleteTweet:(Tweet *)curTweet{
448439
[_self.myTableView reloadData];
449440
[_self.view configBlankPage:([[Login curLoginUser] isSameToUser:_self.curTweets.curUser]? EaseBlankPageTypeTweet: EaseBlankPageTypeTweetOther) hasData:(_self.curTweets.list.count > 0) hasError:NO reloadButtonBlock:^(id sender) {
450441
ESStrongSelf;
451-
[_self sendRequest];
442+
[_self refresh];
452443
}];
453444
}
454445
}];

Coding_iOS/Util/Manager/Coding_NetAPIManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ typedef NS_ENUM(NSInteger, PurposeType) {
191191
- (void)request_Tweet_Delete_WithObj:(Tweet *)tweet andBlock:(void (^)(id data, NSError *error))block;
192192
- (void)request_TweetComment_Delete_WithTweet:(Tweet *)tweet andComment:(Comment *)comment andBlock:(void (^)(id data, NSError *error))block;
193193
- (void)request_Tweet_Detail_WithObj:(Tweet *)tweet andBlock:(void (^)(id data, NSError *error))block;
194-
- (void)request_PublicTweetsWithTopic:(NSInteger)topicID andBlock:(void (^)(id data, NSError *error))block;
194+
- (void)request_PublicTweetsWithTopic:(NSInteger)topicID last_id:(NSNumber *)last_id andBlock:(void (^)(id data, NSError *error))block;
195195

196196
#pragma mark - User
197197
- (void)request_UserInfo_WithObj:(User *)curUser andBlock:(void (^)(id data, NSError *error))block;

Coding_iOS/Util/Manager/Coding_NetAPIManager.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1832,13 +1832,15 @@ - (void)request_Tweet_Detail_WithObj:(Tweet *)tweet andBlock:(void (^)(id data,
18321832
}];
18331833
}
18341834

1835-
- (void)request_PublicTweetsWithTopic:(NSInteger)topicID andBlock:(void (^)(id data, NSError *error))block {
1835+
- (void)request_PublicTweetsWithTopic:(NSInteger)topicID last_id:(NSNumber *)last_id andBlock:(void (^)(id data, NSError *error))block{
18361836
//TODO psy lastid,是否要做分页
18371837
NSString *path = [NSString stringWithFormat:@"api/public_tweets/topic/%ld",(long)topicID];
1838-
NSDictionary *params = @{
1838+
NSMutableDictionary *params = @{
18391839
@"type" : @"topic",
1840-
@"sort" : @"new"
1841-
};
1840+
@"sort" : @"new",
1841+
@"size" : @20,
1842+
}.mutableCopy;
1843+
params[@"last_id"] = last_id;
18421844
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:path withParams:params withMethodType:Get andBlock:^(id data, NSError *error) {
18431845
if (data) {
18441846
[MobClick event:kUmeng_Event_Request_Get label:@"话题_冒泡列表"];

0 commit comments

Comments
 (0)