2013-03-14 129 views
1

我創建了一個應用程序,登錄後必須從網站下載新數據庫,並且當您在自定義日誌中登錄 時,如果用戶按下yes,則會啓動下載階段。當 UIAlertView消失並且UIAlertView的委託人叫我在後臺 線程下載。現在我正在嘗試修改顯示當前百分比的標籤,並將視圖添加到自定義活動指示器中。之後,當活動指示器 更改圖片或label.text得到一個新的字符串屏幕開始閃爍,但 只在第一次啓動(安裝後),如果我強制關閉應用程序,並再次啓動它 閃爍事情沒有出現,在以前的版本的iOS應用程序不閃爍。我在修改標籤時從主線程調用I 。我試圖刪除標籤和活動 指標,並在警報視圖消失後應用程序不閃爍。我試圖刪除 警報視圖,並立即開始下載,之後只有狀態欄開始閃爍 。屏幕在iOS 6.1.2上閃爍

所以我的問題:我該怎麼做才能解決閃爍錯誤?

回答

3

我相信,原因是因爲你正在後臺線程上更新UI。你不能做到這一點,你必須使用主線程此:

要從後臺線程主線程上運行的代碼,你可以使用GCD:

dispatch_async(dispatch_get_main_queue(), ^{ 
    //your UI code here   
}); 

如果不能解決錯誤,這可能是您的設備的一個錯誤。

+0

是的,我使用的 dispatch_async(dispatch_get_main_queue(),^ { loadingLabel.text = [NSString的stringWithFormat:@ 「%d %%」,百分比]; }); 我也嘗試performSelectorOnMainThread來修改標籤:/ – 2013-03-14 08:48:02

+0

@AdriánZukafuJuhász請發佈代碼以分離新線程,以及您在後臺運行的方法。 – 2013-03-14 12:09:23

+0

我用AFHTTPRequestOperation從網上下載文件,所以我將這個操作添加到免費隊列中。並即時使用dispatch_get_main_queue()來修改標籤 – 2013-03-19 06:44:32