2

問題があります:AFNetworkingを使用してサーバーからデータを取得し、NSOperationQueueを使用して多くの操作を追加しました。各リクエストで、この操作をキューに追加し、次のように使用waitUntilAllOperationsAreFinishedしました:

request 1
...
    [queue addOperation:operation1];
    [queue waitUntilAllOperationsAreFinished];

request 2
...
    [queue addOperation:operation2];
    [queue waitUntilAllOperationsAreFinished];

上記のコードを試してみたところ、プログラムがハングしたようで、その後は正常に実行されます。MBProgressHUD を待機キューの終了に追加し、キューの終了を確認したいので、MBProgressHUD を非表示にします。しかし、ボタンをクリックして UIViewController をロードすると、MBProgressHUD が表示されません。

HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Loading";

実際には、キューが終了したときに MBProgressHUD を表示したいと考えています。どうやってやるの?皆さんありがとう

4

3 に答える 3

3

別のより良いアプローチ..

  HUD = [[MBProgressHUD alloc] initWithView:self.view];
    HUD.labelText = @"Doing funky stuff...";
    HUD.detailsLabelText = @"Just relax";
    HUD.mode = MBProgressHUDModeAnnularDeterminate;
    [self.view addSubview:HUD];

    [HUD showWhileExecuting:@selector(doSomeFunkyStuff) onTarget:self withObject:nil animated:YES];

と doSomeFunkyStuff

- (void)doSomeFunkyStuff {
    float progress = 0.0;

    while (progress < 1.0) {
        progress += 0.01;
        HUD.progress = progress;
        usleep(50000);
    }
}

詳細な回答はこちら..

于 2014-09-29T12:17:15.663 に答える