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

Why does my UITableViewController not refresh when I use UIRefreshControl?

我有一个实现 UIRefreshControl 的 UITableViewController 来刷新来自服务器的数据,从调试中我可以看到调用了刷新方法并下载了新的正确数据,但我的 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];

}

您有责任在获得新数据后重新加载 table 视图。刷新控件除了告诉您它已被触发外什么都不做。

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