我有一个带回调块的服务器查询。
- (NSArray *)products{
if(! _products) {
[self.query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if(! error) {
_products = objects;
[self.tableView setNeedsDisplay];
[self.tableView reloadData];
}
}];
}
return _products;
}
在同一个UITableViewController.m
中,我实现了以下方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {}
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{}
所有这些方法都在某处使用self.products
。
我希望表更新并在查询从服务器返回后显示。在此之前,我想要一个活动指示器视图,向用户显示数据仍在从服务器下载。
我试过[self.tableView reloadData]和[self.setNeedsDisplay]。但是现在我的桌子还是空的。
我在这里做错了什么以及如何更改代码?
非常感谢!
答案 0 :(得分:0)
您正在使用像
这样的后台更新代码重新加载它(NSArray *)products{
if(! _products) {
[self.query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if(! error) {
_products = objects;
//reload on main tread
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData]; });
}
}];
}
return _products;
}