私のプロジェクトでは、各ユーザーインタラクションイベントがネットワーク呼び出しを行います(これはTCPであり、HTTPではありません)。ランダムから 表示し、クラス(UIViewControllerまたはUIViewのサブクラスではないネットワークアクティビティを処理するカスタムクラス)から非表示にするには、アクティビティインジケーターをグローバルにする必要があります。UIViewController
NetworkActivityManager
Webを検索したところ、MBProgressHUDが同じ目的で使用されていることがわかりましたが、グローバルにどのように使用するかについての例を見つけることができませんでした。(グローバルとは、 MBProgressHUDのシングルトンオブジェクトと、それを表示および非表示にするクラスメソッドを意味します。)
以下は私がまだ試したものですが、失敗しました:AppDelegate.hで:
@property (nonatomic, retain) MBProgressHUD *hud;
AppDelegate.mの場合:
@synthesize hud;
いくつかのランダムなUIViewControllerオブジェクトでは:
appDelegate.hud = [MBProgressHUD showHUDAddedTo:appDelegate.navigationController.topViewController.view animated:YES];
appDelegate.hud.labelText = @"This will take some time.";
そしてそれを隠しながら、NetworkActivityManager
クラスから:
[MBProgressHUD hideHUDForView:appDelegate.navigationController.topViewController.view animated:YES];
これにより、しばらくするとプロジェクトがクラッシュします(メモリの問題が原因です)。プロジェクトでARCを使用しており、また、ARCバージョンのMBProgressHUDを使用しています。
私は何かが足りないのですか?
重要な質問:
MBProgressHUDをUIAlertViewのように機能させることはできますか?(私はUIViewから独立したMBProgressHUDshowHUDAddedTo:
の実装を意味すると言っています-それはそれ自体を提示するために使用します)???
注意:上記のMBProgressHUDを非表示にするコードでは、MBProgressHUDを表示したときのビューから変更される場合があります。
どんな助けでも大歓迎です。