为什么我的 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 数据的地方。
我有一个实现 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 数据的地方。