我在线下载一个包含文件内容的字符串,并将这些组件按字符串分隔成一个数组。
下载完成后,我正在调用一种方法来更新我的tableview以显示这些值。
- (void)updateTableView {
tableView.delegate = self;
tableView.dataSource = self;
}
基本上在这个方法中我设置了delegate和dataSource,所以使用这个方法更新表视图......
- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.textLabel.text = [arrayDownloaded objectAtIndex:indexPath.row];
return cell;
}
但问题是,在我“触摸”视图之前,表视图不会更新。
就像加载了所有数据并调用了方法一样,但是直到我点击屏幕上的任何地方才能更新tableview吗?
为什么这样,我如何在设置委托和dataSource后立即更新?
-Henry
答案 0 :(得分:1)
完成下载后重新加载tabledata
。
- (void)updateTableView
{
tableView.delegate = self;
tableView.dataSource = self;
[tableView reloadData];
}
答案 1 :(得分:1)
我想出了解决方案。而不是调用[self updateTableView];
来调用以下方法......
- (void)updateTableView {
[tableView reloadData];
}
我需要做[self performSelectorOnMainThread:@selector(updateTableView) withObject:nil waitUntilDoneNO];
有些人称这是一个iOS错误,因为如果你不在主线程numberOfRowsInSection
被调用,但cellForRowAtIndexPath
没有。
我在应用程序中看到的一件奇怪的事情。希望这有助于未来的开发人员。
-Henry
答案 2 :(得分:0)
如果您尚未在某处执行此操作,则需要在应用更改后致电[tableView reloadData]
。