在我的应用程序视图中,我有一个子视图显示“正在加载”,并在同步云数据时显示。
在viewdidload中,我有
// Reachability test.
BOOL isConnected = [self checkInternet];
// If we have connectivity, then sync data with cloud.
if(isConnected){
[self beginDataSync];
}else{
[self hideLoadingView];
}
以下我有这个功能。
- (void)beginDataSync{
SyncData *syncData = [[SyncData alloc] init];
[syncData syncDataStart];
[self startAnimatingIndicator];
do {
[syncData dropHoodsData];
// [syncData dropBarsData];
[syncData nameDataComparison];
[syncData locDataComparison];
[syncData setLocalNamess];
[syncData setLocNamePairs];
[syncData syncDataFinish];
} while ([syncData isSyncing]);
BOOL finishedSyncing = [syncData syncDataFinish];
if (finishedSyncing) {
[self performSelector:@selector(stopAnimatingIndicator) withObject:nil afterDelay:1.0];
}
[syncData release];
}
同步正常,所有内容都正确注销,数据正确无误。有问题的行为是视图在同步时不加载“同步”(应用程序只显示启动直到数据完成同步)。这使得应用程序看起来像是“悬挂”。我希望它加载视图,显示加载子视图和数据同步,然后当同步完成时,它隐藏子视图。我有什么想法吗?
答案 0 :(得分:0)
您需要使用线程。由于您正在主线程中执行所有同步操作,因此程序循环无法执行重绘屏幕。
一种解决方案是在加载View Controller上发生viewDiDAppear方法后开始同步。否则我会调查NSThread。