0

MBProgressHUD を使用して読み込み中のアニメーションでポップアップを表示していますが、問題があります。ボタンを押すと、進行状況インジケーターの呼び出しが実行されます。これがアクションです

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

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

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 の実行の最後にのみ表示されるのはなぜですか? ボタンにはセグエがあります。ターゲット ビューから戻ると、ポップアップが表示されます。

メーターは何ですか?セグエを削除すると、getCalendarioJson の実行の最後にポップアップが表示されます (セグエがないため)。

前もって感謝します。

4

2 に答える 2

0

メソッド[self getCalendarioJson];がありますが、このメソッドはメイン スレッドで実行されます。メイン スレッドは UI の更新用です。データをダウンロードしたり、数秒間の操作を行ったりすると、メイン スレッドは UI の更新を待ちます。

この状況を解決するには、メソッドをバックグラウンド スレッドに配置します。使用できますか[self performSelectorInBackground:@selector(getCalendarioJson) withObject:nil];

于 2013-10-21T18:46:24.877 に答える
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];
}];

進捗値を設定する必要があります。

于 2013-10-22T10:01:52.663 に答える