Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2d3ff1f

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

File tree

3 files changed

+41
-48
lines changed

3 files changed

+41
-48
lines changed

‎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:selfaction:@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_idandBlock:(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_idandBlock:(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)

AltStyle によって変換されたページ (->オリジナル) /