끌어 당겨서 UITableView 컨트롤러 없이 UITableView 새로 고침
UIViewController 내의 UITableView에서 풀 투 리프레시 기능을 구현하려고 합니다.UITableView가 뷰 컨트롤러의 하위 뷰보다 작고 다른 항목이 위에 있으므로 UITableViewController를 사용할 수 없습니다.저는 이것이 가능하다고 생각합니다만, 누가 그것을 실행하는 것을 보았습니까?
에 직접 새로 고침 컨트롤 추가UITableView을 사용하지 않고UITableViewController:
override func viewDidLoad() {
super.viewDidLoad()
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(refresh(_:)), for: .valueChanged)
if #available(iOS 10.0, *) {
tableView.refreshControl = refreshControl
} else {
tableView.backgroundView = refreshControl
}
}
@objc func refresh(_ refreshControl: UIRefreshControl) {
// Do your job, when done:
refreshControl.endRefreshing()
}
목표-C:
이렇게 하면 테이블 보기에 대한 풀 투 리프레시를 구현할 수 있습니다.컬렉션 뷰의 경우와 동일합니다.테이블 뷰 할당을 컬렉션 뷰로 바꾸기만 하면 됩니다.
UITableView *tableViewDemo = [[UITableView alloc]init];
tableViewDemo.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
tableViewDemo.dataSource = self;
tableViewDemo.delegate = self;
[self.view addSubView: tableViewDemo];
UIRefreshControl *refreshController = [[UIRefreshControl alloc] init];
[refreshController addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[tableViewDemo addSubview:refreshController];
#pragma mark - Handle Refresh Method
-(void)handleRefresh : (id)sender
{
NSLog (@"Pull To Refresh Method Called");
[refreshController endRefreshing];
}
@berik의 이 솔루션은 정상적으로 작동하지만 UIC 컨트롤러는 UITableView 컨트롤러 위에 표시됩니다.이 문제를 해결하는 방법은 다음과 같습니다.
override func viewDidLoad() {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged)
tableView.backgroundView = refreshControl // <- THIS!!!
}
func refresh(refreshControl: UIRefreshControl) {
// Do your job, when done:
refreshControl.endRefreshing()
}
저는 UIViewController와 간단한 테이블 뷰로 EGORefreshTableHeaderView를 구현했는데, 비결은 EGO가 스크롤 뷰를 매개 변수로 사용하는 위치에서 테이블 뷰 자체가 스크롤 뷰에서 상속된다는 것입니다.
그것은 그것과 몇 개의 추가 연결만 필요합니다 :)
이게 도움이 되길 바랍니다.
viewController의 loadView 메서드 내에 UIRfreshControl을 생성하면 모든 것이 정상적으로 작동하는 것 같습니다.UIRfresh Control은 정상적으로 작동합니다.iOS 7.1 및 iOS 8.2로 테스트됨
결국 ODRefreshControl을 사용하게 되었습니다.위와 같은 해킹은 필요 없습니다.tableView.backgroundView = refreshControl거의 동일한 방식으로 작동하며 더 나은 UI를 제공합니다.
언급URL : https://stackoverflow.com/questions/10291537/pull-to-refresh-uitableview-without-uitableviewcontroller
'programing' 카테고리의 다른 글
| 공식 C# 드라이버를 사용하여 Mongo DB에서 시작 (0) | 2023.04.29 |
|---|---|
| 아이폰 앱 베타 테스트는 어떻게 하나요? (0) | 2023.04.29 |
| 오류: 참조 테이블 "bar"에 대해 지정된 키와 일치하는 고유 제약 조건이 없습니다. (0) | 2023.04.29 |
| 사용자 컨트롤이 표시될 때 발생하는 이벤트는 무엇입니까? (0) | 2023.04.29 |
| 읽기 전용 속성에서는 양방향 또는 단방향 ToSource 바인딩이 작동할 수 없습니다. (0) | 2023.04.29 |