iOS 목록 에서 데 이 터 를 부 드 럽 게 불 러 오 는 문제 해결
제 목록 은 변경 이 필요 합 니 다.원래 페이지 로 딩 은 MJrefresh 프레임 워 크 를 사용 하여 더 많은 데 이 터 를 불 러 옵 니 다.이것 은 위로 당 기 는 동작 이 있어 야 촉발 할 수 있 습 니 다.제 제품 은 끝까지 미 끄 러 지 려 고 할 때 다음 페이지 의 데 이 터 를 자동 으로 불 러 옵 니 다.내 가 직접 보 니 많은 app 들 이 이런 모델 을 사용 하 는 것 을 발견 했다.
MJrefresh 에 대해 서.
MJrefresh 에는 이런 방법 이 없 기 때문에 이 효 과 는 꼭 MJrefresh 가 이 루어 진 것 이 아니 라 이 루어 지지 않 은 파트너 는 MJrefresh 에서 열심히 찾 지 마 세 요.
기능 실현
실현 방법 은 간단 합 니 다.tableView 의 대리 방법 을 사용 하면 쉽게 실현 할 수 있 습 니 다.-(void)tableView:(UITableView*)tableView willDisplayCell:(UITableView Cell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath 가 바로 이 방법 입 니 다.사용자 정의 로 cell 을 표시 합 니 다.이 방법 은 그다지 상용 되 지 않 는 다.그러나 이 방법 은 모든 cell 이 처음 나타 날 때 촉발 할 수 있다.그리고 현재 페이지 의 몇 번 째 cell 이 나타 날 때 더 많은 데 이 터 를 불 러 오 라 고 요청 할 수 있 습 니 다.
구체 코드
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
if (row == self.dataArray.count - 2 && self.isfinish) {
//dataArray ,isfinish
self.pageNum++;//
[self.updataDic addEntriesFromDictionary:@{@"pageSize": @(10), @"pageNum" :@(self.pageNum)}];//
[self setupDataModel];//
}
}
-(void)serverApi_FinishedSuccessed:(APIRequest *)api result:(APIResult *)sr
{//
if (api == self.goodsAPIRequest) {
if (self.goodsAPIRequest.netWorkType == 22) {
self.dataModel = [[GoodsListModelBase alloc]initWithDictionary:sr.dic];// model
[self.dataArray addObjectsFromArray:self.dataModel.data];
if (self.dataModel.data.count == 0) {
[self.tableView.mj_footer endRefreshingWithNoMoreData];
self.isfinish = NO;
}else {
[self.tableView reloadData];
if (@available(iOS 11,*)) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//iOS11 reloadData - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath , cell , iOS11 cell 。
self.isfinish = YES;
});
}else {
self.isfinish = YES;
}
}
}
}
효 과 는 다음 과 같다.유창 하 다
매 끄 럽 지?물론 네트워크 상태 가 좋 지 않 은 상태 에서 데이터 가 나 오지 않도록 MJrefresh 드 롭 다운 로드 를 설치 해 야 한다.
로 딩 시 디 더 링 문제 추가 가능
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
예상 높이 닫 기.총결산
iOS 목록 에서 데 이 터 를 부 드 럽 게 불 러 오 는 문제 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 iOS 목록 에서 데 이 터 를 자동 으로 불 러 오 는 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.