首先,我使用initWithCoder初始化表,然后在单元格中加载数据。当数据源发生变化(这是Web服务)时,我希望表重新加载。只是为了测试我连接了按钮动作并添加了[self.tableView reloadData]
但表格没有重新加载,但数据源已更改。如果我转到不同的视图并返回到表视图,则会显示新数据。有什么建议吗?
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
self.titleList = [[SearchModel alloc] init];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[self.titleList load: ^(id json) {
[self.tableView reloadData];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}];
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
self.tableView.delegate = self;
self.tableView.dataSource = self;
static NSString *CellIdentifier = @"title";
TitleDetailCell *cell = nil;
Model *title = nil;
title = [self.titleList get:indexPath.row];
if (cell == NULL)
{
cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
[cell movieTitleLabel].text = [title get:@"title"];
[[cell movieImageView] setImageWithURL: thumbnail];
}
return cell;
}
答案 0 :(得分:0)
在调用initWithCoder:
时,尚未创建tableView
。
将代码从initWithCoder:
移到viewDidAppeare:
,在主线程上重新加载数据,它应该有所帮助:
self.titleList = [[SearchModel alloc] init];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[self.titleList load: ^(id json) {
// Log data to see is data is ready
NSLog(@"%@",[title get:@"title"]);
// Reload table on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
});
}];
答案 1 :(得分:0)
两件事:
json
)执行任何操作。您是否需要将其存储在任何位置,以便在表格视图中显示?