UITableView未被更新iOS

时间:2013-06-25 19:44:53

标签: ios objective-c uitableview delegates datasource

我在线下载一个包含文件内容的字符串,并将这些组件按字符串分隔成一个数组。

下载完成后,我正在调用一种方法来更新我的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

3 个答案:

答案 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]