2010-09-14 38 views
0

在我的應用程序視圖中,我有一個子視圖,顯示「正在加載」,並在雲數據同步時出現。iPhone:雲數據同步加載屏幕不工作

在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

使用davydotcom和這個答案我能夠解決這個問題。 http://stackoverflow.com/questions/1261703/reccomended-thread-layer-to-use-for-iphone-development/1261924#1261924 – 2010-09-14 18:59:54

回答

0

您需要使用線程。由於您正在執行主線程中的所有同步操作,因此程序循環沒有機會執行重畫屏幕。

一個解決方案是在裝載視圖控制器發生viewDiDAppear方法之後開始同步。否則,我會研究NSThread。

+0

非常感謝。之前從未使用過線程。沒想到用它們。 – 2010-09-14 19:04:24