当我使用UIRefreshControl时,为什么我的UITableViewController不刷新?
我有一个UITableViewController实现UIRefreshControl刷新服务器的数据,从调试我可以看到刷新方法被调用和新的正确数据下载,但我的UITableViewController没有反映这一点。当我使用UIRefreshControl时,为什么我的UITableViewController不刷新?
如果我关闭了的UITableViewController并打开它再次将正确的数据显示
我刷新代码看起来像这样
- (void)viewDidLoad {
[super viewDidLoad];
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refresh addTarget:self action:@selector(updateData)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
}
- (void) updateData {
[ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle];
[self performSelector:@selector(stopRefresh) withObject:nil afterDelay:5];
}
- (void)stopRefresh {
[self.refreshControl endRefreshing];
}
您负责重装表视图一旦你有新的数据。刷新控件除了告诉你它已被触发之外不会执行任何操作。
我希望在fetchAllProductsInCollection
之后有某种委托方法或完成块,这就是您应该调用endRefreshing
并重新加载表格数据的地方。
的reloadData函数我试过,但它仍然不会刷新,除非我走出去,回来 - (空)了updateData { [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]。 [self performSelector:@selector(stopRefresh)withObject:nil afterDelay:5]; [self.tableView reloadData]; } –
是否有可能我错过了连接数据源或其他东西? –
该代码将立即重新加载数据。如果你在你的'stopRefresh'方法中加入'[self.tableView reloadData];'它可能会工作,但你仍然只是等待5秒钟,而不是在提取完成时实际执行它。如果你没有连接数据源,那么它将无法工作。 – jrturton
管理的tableview的数据,你应该使用表格视图 –