BSPreloadTableVew
一個實現了下拉刷新,上拉加載更多,上拉預加載功能的tableViw用的時候只要繼承這個tableView即可實現上述功能,可以重寫父類實現自定義樣式。效果
用法
pod 'BSPreloadTableVew'代碼示例- (void)viewDidLoad {
[super viewDidLoad];self.pageSize = 20;
self.pageNum = 1;[self
setUpUI];__weak typeof(self) weakeSelf = self;
[self.tableView
setLoadNewData:^{
__strong typeof(weakeSelf) stongSelf = weakeSelf;
stongSelf.pageNum = 1;
[stongSelf fetchData];
}];
// [self.tableView
setLoadMoreData:^{
// __strong typeof(weakeSelf) stongSelf = weakeSelf;
// [stongSelf fetchData];
// }];[self.tableView preLoadDataThreshold4WithPageSize:self.pageSize initialPage:self.pageNum curPage:self.pageNum preLoadFetchBlk:^{
__strong typeof(weakeSelf) stongSelf = weakeSelf;
[stongSelf fetchData];
}];[self showLoading];
[self fetchData];
}
- (void)fetchData{
NSDictionary *dict = @{
@
"page":@(self.pageNum),
@
"count":@(self.pageSize)
};
__weak typeof(self) weakeSelf = self;
[[BSRequestManager sharedInstance] postWithUrl:@
"https://api.apiopen.top/getTangPoetry" args:dict finishBlk:^(NSDictionary * _Nonnull responseObject, NSError * _Nonnull error) {
__strong typeof(weakeSelf) stongSelf = weakeSelf;
[stongSelf.tableView endRefresh];
[stongSelf hideLoading];
if (error) {
[stongSelf.view makeToast:error.localizedDescription];
stongSelf.tableView.isPreLoadRefreshing = NO;
return ;
}//請求成功
if (stongSelf.pageNum == 1){
NSArray *arrTemp = responseObject[@
"result"];
stongSelf.arrMList = [NSMutableArray arrayWithArray:arrTemp];
if (stongSelf.arrMList.count == 0) {
//無數據缺省頁
return ;
}
else if (stongSelf.arrMList.count < stongSelf.pageSize) {
[stongSelf.tableView hideFooter];
stongSelf.tableView.isPreLoadLastPage = YES;
}
else {
[stongSelf.tableView showFooter];
}
[stongSelf.tableView reloadData];
}
else {
NSArray *arrTemp = responseObject[@
"result"];
[stongSelf.arrMList addObjectsFromArray:arrTemp];[stongSelf.tableView reloadData];
if (arrTemp.count < stongSelf.pageSize) {
stongSelf.tableView.isPreLoadLastPage = YES;
[stongSelf.tableView hideFooter];
}
else {
[stongSelf.tableView showFooter];
}
}
stongSelf.pageNum ++;
stongSelf.tableView.isPreLoadRefreshing = NO;
}];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.arrMList.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil;TableViewCellTest *cellTest = [self.tableView dequeueReusableCellWithIdentifier:@
"TableViewCellTest"];
cellTest.data = self.arrMList[indexPath.row];cell = cellTest;
return cell;
}- (void)showLoading{
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
}- (void)hideLoading{
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
復制代碼
轉載于:https://juejin.im/post/5d0857cbe51d45778f076d41
總結
以上是生活随笔為你收集整理的BSPreloadTableVew带有预加载功能的tableView的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。