2013-10-13 88 views
0

我想使用MBProgressHUD通知用戶有關處理來自數組的數據。我有一個有N個元素的數組,並且每個元素都需要處理它(這意味着一段時間),所以我想告訴用戶進度(x%已完成)MBProgressHUD處理來自數組的數據

我有一種方法,處理此陣列(過程數據:(NSArray的*)數據)的數組的每個元素遍歷

我試圖HUD詳細文本標籤設置爲0%調用過程數據之前:(NSArray的*)數據,然後調用這種方法和更新每次迭代hud,但hud不更新(我認爲這是由於我在主線程中執行方法...)

有這樣做的方法嗎?我應該在後臺執行processData :(NSArray *)數據?如果這是解決方案,我該怎麼做?

非常感謝您

+0

介意共享一些代碼? –

+0

你應該從主線程更新它。任何UI活動應該總是在主線程 –

+0

中,您可能沒有正確使用MBProgressHUd。 –

回答

0

爲了讓應用程序響應你應該在一個單獨的線程中執行任何長期運行的代碼。要做到這一點,只需移動方法processData的整個邏輯塊內部是這樣的:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    /// The code here will be executed in a background thread 
}); 

並更新UI,你應該確保實現從主UI線程的正確調用。 因此,您現在可以在另一個塊內執行正確的代碼,這將在主線程中執行,如下所示:

dispatch_async(dispatch_get_main_queue(), ^{ 
    /// The code here will be executed in main UI thread 
});