我正在尝试在我的 TableView 中获得 iOS 7 上的拉动刷新功能。在我的 viewDidLoad
中,我有:
refreshControl = [[UIRefreshControl alloc] init];
[self.mytableView setContentOffset:CGPointMake(0, refreshControl.frame.size.height) animated:YES];
[refreshControl beginRefreshing];
[refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];
然后我运行:
-(void)refreshTable {
[self.mytableView reloadData];
[refreshControl endRefreshing];
}
在 iOS 6 上,这意味着当你在 table view 上下拉时,它会显示一个圆形箭头,当你拉动时会被拉长,拉得足够远后,它会刷新。现在,我没有看到圆形箭头。我错过了什么?
最佳答案
您不必显式设置框架或启动 UIRefreshControl
。如果它是 UITableView
或 UICollectionView
,它本身应该像一个魅力。不过你确实需要阻止它。
你的代码应该是这样的:
- (void)viewDidLoad {
[super viewDidLoad];
refreshControl = [[UIRefreshControl alloc]init];
[refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];
if (@available(iOS 10.0, *)) {
self.mytableView.refreshControl = refreshControl;
} else {
[self.mytableView addSubview:refreshControl];
}
}
在您的 refreshTable
函数中,您需要在刷新数据后停止它。以下是它的外观:
- (void)refreshTable {
//TODO: refresh your data
[refreshControl endRefreshing];
[self.mytableView reloadData];
}
请注意,如果您异步刷新数据,则需要将 endRefreshing
和 reloadData
调用移至完成处理程序。
关于ios - UIRefreshControl - 在 iOS 7 中拉动刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059510/