当我使用UIRefreshControl时,为什么我的UITableViewController不刷新?

时间:2017-10-19 10:22:37

标签: objective-c uitableview 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];

}

1 个答案:

答案 0 :(得分:2)

您有责任在获得新数据后重新加载表格视图。除了告诉您已触发之外,刷新控件不会执行任何操作。

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