嗨我的iPhone应用程序用户更新桌面视图的Web服务,首先将项目保存在核心数据。如何强制tableview显示立即从web服务获取的内容?
但是,当我相信数据存在于核心数据中以及桌面视图在屏幕上刷新时,目前存在很长的延迟。
随着应用程序的空白安装,应用程序屏幕可以在微调停止后数据出现在屏幕上10到15秒后保持空白,但是,如果您点击一行,则可以查看项目建议的详细信息数据存在于核心数据中。类似的,如果你上下滚动,屏幕开始填充。我的问题是,如何在数据保存到核心数据后立即让数据显示在屏幕上?
我试过把[self.tableView reloadData]
放在所有的地方,但它似乎没有影响显示数据的时间表。唯一有一个效果的是,如果我在调用Web服务之后将它放在viewDidLoad中。在这种情况下,每行显示占位符图像,但文本不会在相同的十到十五秒内出现。
这里是进行Web服务调用的viewDidLoad方法。
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
_spinner.center = CGPointMake(160, 200);
_spinner.tag = 1;//todos
[self.tableView addSubview: _spinner];
[self.tableView bringSubviewToFront:_spinner];
_spinner.hidesWhenStopped = YES;
_spinner.hidden = NO;
[_spinner startAnimating];
//GO TO BACKGROUND THREAD FOR SERVER CALL
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL: kServiceURL];
[self fetchServiceData:data];//SYNCING NOW TAKING PLACE
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
[[self.view viewWithTag:1] stopAnimating];
});
});
}
我也放置self.tableView reloadData viewWillAppear没有成功。
fetchServiceData中会发生什么? – trapper