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 。 如果它是一个UITableViewUICollectionView ,它应该像一个魅力本身。 你确实需要停止它。

这里是你的代码应该是这样的:

 - (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刷新数据,则需要将endRefreshingreloadData调用移至完成处理程序。

您忘记将UIRefreshControl附加到您的表格视图。

改变你的viewDidLoad

  refreshControl = [[UIRefreshControl alloc]init]; [refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged]; [self setRefreshControl:refreshControl]; 

PS你的视图控制器应该是UITableViewController的子类。