iOS 에서 UIRefreshControl 의 기본 사용 에 대한 자세 한 설명
5373 단어 iosuirefreshcontrol쓰다
자주 업데이트 해 야 할 목록 을 보 여줄 때,예 를 들 어 상품 목록,채 팅 목록 을 보 여줄 때,우 리 는 어떤 조작 을 통 해 목록 을 갱신 해 야 한다.가장 자주 사용 하 는 것 은 바로 아래 에서 새로 고침 하 는 방법 이다.아래 에서 새로 고침 하 는 것 은 iOS 의 표준 컨트롤 로 서 제3자 라 이브 러 리 를 사용 하지 않 아 도 쉽게 실현 할 수 있다.이 글 은 UIRefreshControl 을 사용 하여 드 롭 다운 리 셋 기능 을 수행 하 는 방법 을 설명 한다.
UIRefreshControl 은 iOS 6 자체 의 UITableView 드 롭 다운 리 셋 컨트롤 입 니 다.iOS 6 에 서 는 UITableView Controller 에 UIRefreshControl 컨트롤 이 내장 되 어 있 습 니 다.UIRefreshControl 은 현재 UITableViewController 에 만 사용 할 수 있 습 니 다.다른 ViewController 에 사용 하면 다음 과 같은 오류 알림 을 받 을 수 있 습 니 다.(즉,UIRefreshControl 은 UITableViewController 에서 만 관리 할 수 있 습 니 다)
1.먼저 UIRefreshControl 의 헤더 파일 보기
NS_CLASS_AVAILABLE_IOS(6_0) @interface UIRefreshControl : UIControl
- (instancetype)init;
@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing;
//
@property (nonatomic, retain) UIColor *tintColor;
//
@property (nonatomic, retain) NSAttributedString *attributedTitle UI_APPEARANCE_SELECTOR;
//
- (void)beginRefreshing NS_AVAILABLE_IOS(6_0);
//
- (void)endRefreshing NS_AVAILABLE_IOS(6_0);
@end
사용 방법1.현재 UITableview Controller 에 만 유용 합 니 다.
2.현재 드 롭 다운 리 셋 만 가능 하 며,업 로드 는 불가능 합 니 다.
3.init 또는 viewDidLoad 에서 UIRefreshControl 을 만 들 고 텍스트,색상 등 정 보 를 설정 합 니 다.
4.UIRefreshControl 에 방법 을 추가 하고 값 이 바 뀔 때 호출 하 며 방법 은 데이터 요청 에 사 용 됩 니 다.
5.이 방법 에서 데이터 확인 을 요청 한 후 endRefreshing 방법 을 사용 하여 새로 고침 을 닫 습 니 다.
2.예시 데모
#import <UIKit/UIKit.h>
@interface RefreshTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, retain) UITableView * tableView;
@property (nonatomic, retain) UIRefreshControl * refreshControl;
@property (nonatomic, retain) NSMutableArray * dataSource;
@end
#import <UIKit/UIKit.h>
@interface RefreshTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, retain) UITableView * tableView;
@property (nonatomic, retain) UIRefreshControl * refreshControl;
@property (nonatomic, retain) NSMutableArray * dataSource;
@end
#import "RefreshTableViewController.h"
@interface RefreshTableViewController ()
@end
@implementation RefreshTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
_dataSource = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil nil];
// UITableView
_tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
[_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
[self.view addSubview:_tableView];
// UIRefreshControl
_refreshControl = [[UIRefreshControl alloc] init];
_refreshControl.tintColor = [UIColor redColor];
_refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@" "];
[_refreshControl addTarget:self action:@selector(refreshControlAction) forControlEvents:UIControlEventValueChanged];
[_tableView addSubview:_refreshControl];
}
- (void) refreshControlAction {
if (self.refreshControl.refreshing) {
_refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@" ..."];
// 1.
[self requestAPIData];
// 2.
[self.refreshControl endRefreshing];
// 3.
[self.tableView reloadData];
}
}
- (void)requestAPIData {
//
[NSThread sleepForTimeInterval:2];
for (int i = 0; i < 5; i++) {
int value = (arc4random() % 100) + 1;
[self.dataSource addObject:[NSString stringWithFormat:@"%d", value]];
}
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.dataSource.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString * ID = @"UITableViewCell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
cell.textLabel.text = self.dataSource[indexPath.row];
return cell;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
실행 효과:UIRefreshControl 이 사용 하고 있 는 구덩이 밟 기 지침 에 대해 서 는 이 글 을 참고 하 실 수 있 습 니 다https://www.jb51.net/article/139064.htm
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.