2013-04-26 76 views
0

我正在使用表格視圖並試圖顯示MBProgressHud以顯示模式(2.5秒)需要很長時間的單元格選擇。當網絡活動指示器顯示時,MBProgressHud不顯示

這是我如何我開始MBProgressHud:

- (void)showProgressHud 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES]; 
    }); 
} 

- (void)hideProgressHud 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD hideHUDForView:self.streamTableView animated:YES]; 
    }); 
} 

我注意到,進度HUD顯示,只有當網絡活動指示燈不旋轉。

當表重新加載時(使用Restkit 0.20.0),網絡變爲活動狀態。我有AFNetworking配置爲在打開連接時啓動活動指示器。

我已經驗證了,如果我禁用活動的指標問題消失:

[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:NO]; 

我真的希望能夠保留選項啓用兩種方式。有什麼建議麼?

回答

0

看起來網絡活動指示器正在捆綁MBProgressHud使用的運行循環。

我結束了使用this技術,讓MBProgressHud時間指標的關係再次循環之前顯示。

- (void)showProgressHud 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES]; 
     [[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]]; 
    }); 
} 
0

您似乎在主線程上運行您的網絡代碼,並阻止任何UI更新,直到它完成。檢查單元格選擇/重新加載後如何啓動網絡連接,並確保它正在排隊到後臺線程上。該活動的指標是完全獨立於您的應用程序代碼(事實上,它運行在不同的線程,這就是爲什麼它的工作原理,並不會受到影響,也沒有你的應用程序UI)。