我有 UITableViewController 作为 RootViewController。我需要根据从 RootViewController 线程启动的另一个线程获取的数据向表中添加行。当我从其他线程返回到 RootViewController 的线程时,我拥有更新的数据,但我无法更新 TableView。我打电话给[self.tableview reloadData];
方法,但这似乎不起作用。我也尝试过[self.tableview setNeedsDisplay]
打电话但没有成功。如何使用新数据更新 TableView?
In my RootViewController Class I have:
- (void) reload {
for(int i=0;i<[camDetails count];i++)
{
cCameraInformation *obj = [[cCameraInformation alloc] init];
obj = [camDetails objectAtIndex:i];
NSString *tString = [[NSString alloc] initWithFormat: @" Remote %s %s",[obj->sCameraid UTF8String],[obj->sCameraid UTF8String]];
[tableEntry addObject:tString];
}
[self.tableView reloadData];
}
然后有一个接收类线程,它不断地接收数据。它的基类是NSObject。因此,我使用 Application 委托类(它具有 RootViewController 类的实例)在接收线程中调用 RootViewController 类的此重新加载数据方法。
我无法使用 PerformSelectorOnMainThread 调用上述方法。
嘿,您确定要在主线程上更新表视图显示/重新加载表视图吗?我遇到了同样的问题,数据在那里,但直到用户滚动,表视图才更新
经过谷歌搜索,我知道你需要在主 ui 线程上调用 reloadData 方法
代码示例如下:
- (void) getDataOnNewThread
{
// code here to populate your data source
// call refreshTableViewOnMainThread like below:
[self performSelectorOnMainThread:@selector(refreshTableView) withObject:nil waitUntilDone:NO];
}
- (void) refreshTableView
{
[tableView reloadData];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)