답변:
: 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()
}
tableView.insertSubview(refreshControl, atIndex: 0)
대신tableView.addSubview(refreshControl)
목표 -C :
이것이 테이블 뷰에 대해 새로 고침 풀을 구현하는 방법입니다. 컬렉션보기의 경우와 동일합니다. 테이블 뷰 alloc을 콜렉션 뷰로 바꾸십시오.
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 의이 솔루션은 정상적으로 작동하지만 UIController는 UITableViewController 위에 표시됩니다. 이를 수정하는 방법은 다음 변경을 수행하는 것입니다.
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()
}
refreshControl
아래가 나타나지 않습니다 tableView
. 이 문제를 다음과 같이 수정했습니다. tableView.addSubview (refreshControl) 대신 tableView.insertSubview (refreshControl, atIndex : 0)
UIViewController와 간단한 테이블 뷰를 사용하여 EGORefreshTableHeaderView를 구현했습니다. 테이블 뷰 자체가 스크롤 뷰에서 상속되면 EGO가 스크롤 뷰를 매개 변수로 사용하는 곳의 트릭입니다.
그것은 단지 몇 가지 추가 연결이 필요합니다 :)
도움이 되었기를 바랍니다.
viewController의 loadView 메소드 내에 UIRefreshControl을 작성하면 모든 것이 잘 작동하는 것 같습니다. UIRefreshControl은 정상적으로 동작합니다. iOS 7.1 및 iOS 8.2에서 테스트
ODRefreshControl 을 사용 했습니다 . 위와 같은 해킹이 필요하지 않으며 tableView.backgroundView = refreshControl
거의 같은 방식으로 작동하며 더 나은 UI를 제공합니다.