Skip to content

Commit 61ba974

Browse files
committed
封装下拉刷新与上拉加载
1 parent 5ccc5cc commit 61ba974

File tree

3 files changed

+75
-15
lines changed

3 files changed

+75
-15
lines changed

KtTableView/KtTableView/KTMainViewController.m

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,9 @@ @implementation KTMainViewController
2727
- (void)viewDidLoad {
2828
[super viewDidLoad];
2929
[self createModel];
30-
// [self getFirstPage];
31-
__weak typeof(self) wSelf = self;
32-
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
33-
[wSelf getFirstPage];
34-
}];
35-
36-
self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
37-
[wSelf getFirstPage];
38-
}];
3930

31+
self.tableView.isNeedPullUpToRefreshAction = YES;
32+
self.tableView.isNeedPullDownToRefreshAction = YES;
4033
// Do any additional setup after loading the view, typically from a nib.
4134
}
4235

@@ -58,6 +51,14 @@ - (void)didReceiveMemoryWarning {
5851
// Dispose of any resources that can be recreated.
5952
}
6053

54+
- (void)pullUpToRefreshAction {
55+
[self getFirstPage];
56+
}
57+
58+
- (void)pullDownToRefreshAction {
59+
[self getFirstPage];
60+
}
61+
6162
- (void)getFirstPage {
6263
self.model.params = @{@"nextPage": @0};
6364
[self.model loadWithShortConnection];
@@ -70,12 +71,7 @@ - (void)requestBooksSuccess {
7071
[self.dataSource appendItem:item];
7172
}
7273
[self.tableView reloadData];
73-
if ([self.tableView.mj_header isRefreshing]) {
74-
[self.tableView.mj_header endRefreshing];
75-
}
76-
if ([self.tableView.mj_footer isRefreshing]) {
77-
[self.tableView.mj_footer endRefreshing];
78-
}
74+
[self.tableView stopRefreshingAnimation];
7975
}
8076

8177
@end

KtTableView/KtTableView/KtBaseTableView.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@
2121

2222
- (UIView *)headerViewForSectionObject:(KtTableViewSectionObject *)sectionObject atSection:(NSInteger)section;
2323

24+
// 下拉刷新触发的方法
25+
26+
- (void)pullDownToRefreshAction;
27+
28+
// 上拉加载触发的方法
29+
30+
- (void)pullUpToRefreshAction;
31+
2432
// 将来可以有 cell 的编辑,交换,左滑等回调
2533

2634
// 这个协议继承了UITableViewDelegate ,所以自己做一层中转,VC 依然需要实现某些代理方法。
@@ -33,4 +41,11 @@
3341

3442
@property (nonatomic, assign) id<KtTableViewDelegate> ktDelegate;
3543

44+
// 是否需要下拉刷新和上拉加载
45+
@property (nonatomic, assign) BOOL isNeedPullDownToRefreshAction;
46+
@property (nonatomic, assign) BOOL isNeedPullUpToRefreshAction;
47+
48+
- (void)stopRefreshingAnimation;
49+
- (void)triggerRefreshing;
50+
3651
@end

KtTableView/KtTableView/KtBaseTableView.m

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#import "KtBaseTableViewCell.h"
1111
#import "KtTableViewSectionObject.h"
1212
#import "KtTableViewBaseItem.h"
13+
#import "MJRefresh.h"
1314

1415
@implementation KtBaseTableView
1516

@@ -23,6 +24,8 @@ - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
2324
self.sectionHeaderHeight = 0;
2425
self.sectionFooterHeight = 0;
2526
self.delegate = self;
27+
self.isNeedPullDownToRefreshAction = NO;
28+
self.isNeedPullUpToRefreshAction = NO;
2629
}
2730
return self;
2831
}
@@ -34,6 +37,52 @@ - (void)setKtDataSource:(id<KtTableViewDataSource>)ktDataSource {
3437
}
3538
}
3639

40+
#pragma mark - 上拉加载和下拉刷新
41+
- (void)setIsNeedPullDownToRefreshAction:(BOOL)isEnable {
42+
if (_isNeedPullDownToRefreshAction == isEnable) {
43+
return;
44+
}
45+
_isNeedPullDownToRefreshAction = isEnable;
46+
__block typeof(self) weakSelf = self;
47+
if (_isNeedPullDownToRefreshAction) {
48+
self.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
49+
if ([weakSelf.ktDelegate respondsToSelector:@selector(pullDownToRefreshAction)]) {
50+
[weakSelf.ktDelegate pullDownToRefreshAction];
51+
}
52+
}];
53+
54+
}
55+
}
56+
57+
- (void)setIsNeedPullUpToRefreshAction:(BOOL)isEnable
58+
{
59+
if (_isNeedPullUpToRefreshAction == isEnable) {
60+
return;
61+
}
62+
_isNeedPullUpToRefreshAction = isEnable;
63+
__block typeof(self) weakSelf = self;
64+
if (_isNeedPullUpToRefreshAction) {
65+
self.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
66+
if ([weakSelf.ktDelegate respondsToSelector:@selector(pullUpToRefreshAction)]) {
67+
[weakSelf.ktDelegate pullUpToRefreshAction];
68+
}
69+
}];
70+
}
71+
}
72+
73+
- (void)stopRefreshingAnimation {
74+
if ([self.mj_header isRefreshing]) {
75+
[self.mj_header endRefreshing];
76+
}
77+
if ([self.mj_footer isRefreshing]) {
78+
[self.mj_footer endRefreshing];
79+
}
80+
}
81+
82+
- (void)triggerRefreshing {
83+
[self.mj_header beginRefreshing];
84+
}
85+
3786
#pragma mark - UITableViewDelegate
3887

3988
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {

0 commit comments

Comments
 (0)