0

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

下载完成后,我将调用一个方法来更新我的 tableview 以显示这些值。

- (void)updateTableView {
    tableView.delegate = self;
    tableView.dataSource = self;
}

基本上在这种方法中,我设置了委托和数据源,以便使用这种方法更新表视图......

- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [[UITableViewCell alloc] init];
    cell.textLabel.text = [arrayDownloaded objectAtIndex:indexPath.row];
    return cell;
}

但问题是表格视图在我“触摸”视图之前不会更新。

就像加载了所有数据并且调用了该方法一样,但直到我点击屏幕上的任何位置,表格视图才会更新?

为什么会这样,如何在设置委托和数据源后立即更新?

-亨利

4

3 回答 3

1

下载完成后重新加载即可tabledata

- (void)updateTableView 
{
    tableView.delegate = self;
    tableView.dataSource = self;
    [tableView reloadData];
}
于 2013-06-26T05:11:54.243 回答
1

我想出了解决办法。而不是调用[self updateTableView];调用以下方法...

- (void)updateTableView {
    [tableView reloadData];
}

我需要做[self performSelectorOnMainThread:@selector(updateTableView) withObject:nil waitUntilDoneNO];

有些人称这是一个 iOS 错误,因为如果您不在主线程上,则会numberOfRowsInSection被调用但cellForRowAtIndexPath不会。

我在我的应用程序中看到了一件奇怪的事情。希望这对未来的开发人员有所帮助。

-亨利

于 2013-07-15T19:23:22.510 回答
0

如果您尚未在某处执行此操作,则需要[tableView reloadData]在应用更改后致电。

于 2013-06-25T19:54:11.927 回答