2013-10-21 93 views
0

我使用MBProgressHUD顯示帶加載動畫的彈出式窗口,但出現問題。當我按下按鈕時,執行進度指示器調用。這是getCalendarioJson行動只有在操作完成時纔會顯示MBProgressHUD

- (IBAction)calendarioButtonPressed:(UIButton *)sender { 

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.mode = MBProgressHUDModeIndeterminate; 
hud.labelText = @"Uploading"; 
[hud show:YES]; 
[self getCalendarioJson]; 
} 

我有這個

- (void) getCalendarioJson { 

//LETTURA CALENDARIO - INIZIO 
NSString *calLink = myLink; 

NSData* responseData = [NSData dataWithContentsOfURL:[NSURL URLWithString:calLink]]; 


NSArray* json = [NSJSONSerialization 
       JSONObjectWithData:responseData //1 
       options:kNilOptions error:nil]; 
NSDictionary *firstObject = [json objectAtIndex:0]; 

NSDictionary *cal = [firstObject objectForKey:@"output"]; 
variabiliGlobali.calendario = [[NSMutableArray alloc] init]; 
for (NSDictionary *dict in cal) { 
    [variabiliGlobali.calendario addObject: dict]; 
} 

//LETTURA CALENDARIO - FINE 

} 

爲什麼加載彈出在getCalendarioJson執行結束時纔會出現? 該按鈕有一個segue。當我從目標視圖返回時,我可以看到彈出窗口。

什麼是metter?如果我刪除了segue,我可以在getCalendarioJson執行結束時看到彈出窗口(因爲沒有segue)。

在此先感謝。

+0

您是否爲該欄設置了進度? – RFG

+0

你是什麼意思? –

+0

酒吧的彩色部分(即50%)會響應您發送給酒吧的「進度」值。因此,如果您設置progressBar.progress = 0.5,則progressBar將着色爲50%。我已經提供了一個代碼的答案。 – RFG

回答

0

你有一個方法[self getCalendarioJson];但是這個方法在主線程中運行,主線程用於UI更新,當你下載數據或者進行持續時間爲幾秒的操作時,主線程等待更新UI。

爲了解決這一情況,提出的方法,在後臺線程,你可以使用[self performSelectorInBackground:@selector(getCalendarioJson) withObject:nil];

0

https://github.com/jdg/MBProgressHUD

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.mode = MBProgressHUDModeAnnularDeterminate; 
hud.labelText = @"Loading"; 
[self doSomethingInBackgroundWithProgressCallback:^(float progress) { 
    hud.progress = progress; //Here you set the progress 
} completionCallback:^{ 
    [hud hide:YES]; 
}]; 

你應該設置進度值。

相關問題