2017-10-19 59 views
0

我有一个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]; 

} 
+0

管理的tableview的数据,你应该使用表格视图 –

回答

2

您负责重装表视图一旦你有新的数据。刷新控件除了告诉你它已被触发之外不会执行任何操作。

我希望在fetchAllProductsInCollection之后有某种委托方法或完成块,这就是您应该调用endRefreshing并重新加载表格数据的地方。

+0

的reloadData函数我试过,但它仍然不会刷新,除非我走出去,回来 - (空)了updateData { [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]。 [self performSelector:@selector(stopRefresh)withObject:nil afterDelay:5]; [self.tableView reloadData]; } –

+0

是否有可能我错过了连接数据源或其他东西? –

+0

该代码将立即重新加载数据。如果你在你的'stopRefresh'方法中加入'[self.tableView reloadData];'它可能会工作,但你仍然只是等待5秒钟,而不是在提取完成时实际执行它。如果你没有连接数据源,那么它将无法工作。 – jrturton

相关问题