[tableView reloadData]; 在我滚动tableView之前不起作用

Mac*_*wic 21 uitableview reloaddata ios

我有一个简单的应用程序,当用户键入时,可以用XML下载搜索结果UISearchBar.下载+解析是线程化的,一旦完成它就会触发一个NSNotification告诉ViewController的表视图[tableView reloadData];

以下是在结果出现时接收通知的代码:

- (void)receivedResults:(id)notification {
    results = [notification object];
    DLog(@"Received %i results",[results count]);
    [[self tableView] reloadData];
}
Run Code Online (Sandbox Code Playgroud)

我得到日志输出"Received 4 results",但表格视图不会重新加载数据,直到我滚动/拖动几个像素.我正在使用内置的UITableViewCellStyleSubtitle单元格样式,而且我不会改变高度或者用表视图来表达任何奇特的东西.

我究竟做错了什么?

The*_*der 66

我能够得到同样的工作.但问题是需要在主线程上调用重载数据.

dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
});
Run Code Online (Sandbox Code Playgroud)

我认为这比performSelectorOnMainThread选项更实用


And*_*rew 34

呼叫

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
Run Code Online (Sandbox Code Playgroud)

代替

[self.tableview reloadData]
Run Code Online (Sandbox Code Playgroud)