UIRefreshControl – 拉到iOS 7中刷新
我试图在我的表格视图中获取iOS 7的拉动function。 在我的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上,这意味着当你拉下桌子的时候,它会显示一个圆形的箭头,当你拉动的时候会拉长,拉到足够的时候会刷新。 现在,我看不到圆形箭头。 我错过了什么?
您不必显式设置框架或启动UIRefreshControl
。 如果它是一个UITableView
或UICollectionView
,它应该像一个魅力本身。 你确实需要停止它。
这里是你的代码应该是这样的:
- (void)viewDidLoad { [super viewDidLoad]; refreshControl = [[UIRefreshControl alloc]init]; [self.mytableView addSubview:refreshControl]; [refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged]; }
在你的refreshTable
函数中,当你刷新数据时,你需要停止它。 这是如何看起来像这样:
- (void)refreshTable { //TODO: refresh your data [refreshControl endRefreshing]; [self.mytableView reloadData]; }
请注意,如果您正在asynchronous刷新数据,则需要将endRefreshing
和reloadData
调用移至完成处理程序。
您忘记将UIRefreshControl
附加到您的表格视图。
改变你的viewDidLoad
refreshControl = [[UIRefreshControl alloc]init]; [refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged]; [self setRefreshControl:refreshControl];
PS你的视图控制器应该是UITableViewController
的子类。