2012-01-05 59 views
0

儘快開始,我有一個表在viewControllers之一。當其中一行被點擊時,它會將用戶轉到不同的視圖/視圖控制器,並且它可以工作。在這個新的viewController中,數據正在從後臺的php腳本解析。獲取微調的觀點在我的應用程序加載

這大約需要7-10秒,在這個時候,我希望用戶立即看到一個微調,上面寫着「中..」。我有這個實現自己,但微調不啓動加載到4-5秒。在此期間,屏幕是完全凍結,我不能挖掘任何東西,直到顯示旋轉/數據回去。

我試圖把下面的代碼放在實際獲取數據的方法中,同時在兩個(而不是同一時間)viewDidAppear和ViewDidLoad方法,但同樣的事情發生。

如果有人知道如何解決這個問題,這將是大加讚賞。

謝謝

[web loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://xxx.xx.xx.xxx/stuff/xxx.php"]]]; 

    [web addSubview:spinner]; 

    timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector: @selector(tick) userInfo:nil repeats:YES]; 


    load_message = [[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil]; 

    spinner= [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.center = CGPointMake(135.0, 60.0); 
    [load_message addSubview:spinner]; 




-(void) tick 
{ 

if(!web.loading) 
{ 
    [spinner stopAnimating];  
    [load_message dismissWithClickedButtonIndex:0 animated:TRUE]; 



} 

else { 

    [load_message show]; 
    [spinner startAnimating]; 
} 



} 

回答

2

你可以開始那麼你的微調延遲後啓動漫長的過程:

- (void)someMethod 
{ 
    [spinner startAnimating]; 
    [self [email protected](doLongProcess:) withObject:someObject afterDelay:0.0]; 
} 
- (void)doLongProcess:(id)someObject 
{ 
    //Some really long process 
} 

你的微調最有可能阻止,因爲一個漫長的過程可以在同一線程上發生。

+0

謝謝你的回覆傑里米。我會在哪裏調用某種方法?在viewDidAppear?因爲在那之前,我正在呼籲我的長期處理方法。謝謝 – Teddy13 2012-01-05 06:22:43

+0

Nvm我解決了它。謝謝! – Teddy13 2012-01-05 06:42:07

1

你要做下列之一(假設你把你的web請求在一個名爲「startWebRequest」的方法):

  1. 啓動UIActivityIndi​​catorView上的主UI線程(如果尚未從主線程運行):

    [self performSelectorOnMainThread:@selector(startWebRequest)withObject:nil waitUntilDone:NO];

  2. 開始在後臺線程web請求:

    [自performSelectorInBackground:@selector(startWebRequest)withObject:無];

  3. 暫停等的第二1/10開始像web請求之前:

    [的NSTimer scheduledTimerWithTimeInterval:0.1F目標:自選擇器:@selector(startWebRequest)USERINFO:無重複:NO];

+0

謝謝耶書亞...那工作以及 – Teddy13 2012-01-05 06:42:25

+0

不是一個大問題,但我回答6小時傑里米之前,我想我的答案是更完整的很好的建議。 – 2012-01-05 17:57:22

相關問題