1

Web サービスへのリクエストを処理するクラスがあります。サービスから情報を取得し始めたら、別のクラス ビューに HUD を作成して追加します。このような、

HUD = [[MBProgressHUD showHUDAddedTo:viewController.view animated:YES] retain];

読み込みが完了したら、これを呼び出します。

[HUD hideHUDForView:viewController.view animated:YES];

デリゲートを自分自身に設定し、

HUD.delegate = self;

しかし、ビューから削除することはできません。

- (void)hudWasHidden {
// Remove HUD from screen when the HUD was hidded
[HUD removeFromSuperview];
[HUD release];
HUD = nil;
}

最初のクラスが Web サービスからデータを取得している間に、あるクラスで開始して別のクラスに表示したいと考えています。次に、最初のクラスから i を非表示にします。

何か案は?

編集:

さて、最初のクラスのデリゲートを次のように設定します。

HUD.delegate = viewController;

しかし、どこに置くのですか:

- (void)hudWasHidden {
// Remove HUD from screen when the HUD was hidded
[HUD removeFromSuperview];
[HUD release];
HUD = nil;
}
4

2 に答える 2

1

これを行うには、HUDのデリゲートを他のクラスに設定します。

たとえば、クラスAにHUDを追加し、それをクラスBから削除したい場合は、HUDのデリゲートをクラスBに設定する必要があります。

于 2011-08-26T11:53:11.277 に答える
0

最初の呼び出しから完了ブロックを使用し、Web サービスから応答を受け取ったら、ブロック内の HUD を非表示にすることができます。

次のような長い行:

[self callServiceWithBlock:^(NSError *error){

//Your service has answered, you can now hide the HUD

    [hud HIDE:YES];
    if (error){
        NSLog(@"Error : %@");
    }


}];
于 2015-05-06T12:14:23.567 に答える