我有以下的這些不正常的UIAlertView中加載指示燈代碼,並給了我UIAlertView中加載指示燈沒有在輔助線程工作
- (void) launchActivity
{
//some logic...
[NSThread detachNewThreadSelector:@selector(updateFilterProgress) toTarget:self withObject:nil];
}
- (void) updateFilterProgress {
if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
{
UIAlertView *myAlert = [[[UIAlertView alloc] initWithTitle:@"No Internet Connectivity" message:@"This app require an internet connection via WiFi or cellular network to work." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil] autorelease];
[myAlert show];
}
else{
UIAlertView *alertMe = [[[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil] autorelease] ;
//tried this way by placing below line....no result
[alertMe performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
//[alertMe show];
//some logic...
}
更新時間: 在我打電話的主線程Web的服務和加載數據。因此我給了另一個加載UIAlertView的線程,它與iOS 4,5一起工作。但它在iOS 6中崩潰。如果我將AlerView放在主線程上,那麼在加載任何內容時都不顯示,但在獲取數據後AlertView會顯示加載指示器幾秒鐘。任何建議...
我編輯了我的問題。您可以檢查並建議.. –
@Navnath Memane當您在主線程上加載數據時,它將被阻止,並且所有UI更改都將在數據加載後排隊等待執行。您需要實現一個反向概念:在分離的線程中加載數據,並在主線程中顯示警報,這樣加載時UI不會被阻塞。但請注意,因爲連接委託消息用於在調用該操作的同一線程上觸發。這意味着如果你做的一切正確,委託調用將在分離的線程中,這就是爲什麼你需要使用GCD在主線程上顯示警報。 –
你的反向技巧就像這裏的魔術一樣。我現在正在調用輔助線程上的Web服務。你可以編輯你的答案,以便我可以接受它。 –