7

我有一個當前導航到viewcontroller的按鈕,連接到IBAction。UIActivityIndi​​catorView直到加載完成後才顯示

在IBAction中,我像往常一樣創建一個UIActivityIndi​​catorView,使用[self.view addSubView],然後加載一些圖片。

我試過指示器視圖,視圖控制器和窗口上的setNeedsDisplay,但它仍然在顯示指示器之前加載圖片,這對我來說當然是無用的。

所以我正在尋找一種方法來強制即時重繪(當我認爲更多一點關於它不太可能使工作),或在指標出現後加載圖片的方式,或者啓動一個單獨的線程或類似的方法來啓動動畫/顯示指示器,或者將指示器放在單獨的視圖控制器中,並以某種方式強制它在進行圖片加載之前添加/顯示自己。

建議?

回答

18

我在這種情況下產生了一個新的線程,它釋放了主線程來處理UI交互,同時在後臺加載東西。

首先顯示UIActivityIndicatorView,然後產生一個加載圖像的新線程,然後在新線程中執行的方法的最後一行中隱藏UIActivityIndicatorView

下面是一個例子:

//do stuff... 
[activityIndicatorView startAnimating]; 
[NSThread detachNewThreadSelector:@selector(loadImages) toTarget:self withObject:nil]; 

在你loadImages方法:

- (void) loadImages { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    //load images... 
    [activityIndicatorView performSelectorOnMainThread:@selector(stopAnimating)]; 
    [pool drain]; 
} 
+0

謝謝你,工作就像一個魅力!這對於這樣的一次性來說簡單而有用。有關如何將它用於具有大量加載和線程的較重應用程序時的任何提示? – 2010-11-04 15:20:58

+1

+1創建線程!很好的答案。 – jv42 2010-11-04 15:21:23

+1

我希望我能夠百萬次提升這一點。 – Mason 2011-10-20 19:31:34

相關問題