12

アプリケーション内で使用しようとしてMBProgressHUDいます。HUDがビューに追加された時点でエラーが発生します。

これは、プログレスバーをビューに追加するコードです。

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
[self.view.window addSubview:HUD];

// Set determinate mode
HUD.mode = MBProgressHUDModeAnnularDeterminate;

HUD.labelText = @"Loading";

// myProgressTask uses the HUD instance to update progress
[HUD showWhileExecuting:@selector(processFieldEntries) onTarget:self withObject:nil animated:YES];

アプリケーションエラー:

*** Assertion failure in -[MBProgressHUD initWithView:], /Users/.../MBProgressHUD/MBProgressHUD.m:190

また

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'View must not be nil.'

Crash: View must not be nil.

アサーションの失敗の目的と解決方法を知っている人はいますか?MBProgressHUD.mファイルは、[ビルドフェーズ]タブの[ソースのコンパイル]に含まれ、ヘッダーはファイルに含まれています。進捗状況は、フィールド検証を処理するためのプロセスに追加されています。

4

2 に答える 2

17

こんにちはここにHUDディスプレイの簡単なヒントがあります。

まず、ここで反転しようとはしませんが、ナビゲーションコントローラーのHUDを初期化する場合は、HUDを持っていることを確認してください。ビューにHUDを高く固定するほど、無効になり、HUDオーバーレイでカバーされるインタラクションが多くなることに注意してください(これは通常は良いことです)。

たとえば、基本的なビューコントローラ、またはモーダルなどで次のようなことを行う場合:

HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];

初期化したのと同じビューに追加していることに注意してください。

また、self.navigationcontroller.view、self.splitviewcontroller.view、または私のお気に入りのself.splitviewcontroller.view.superview(ビューの両側をカバーして無効にするため)のような他のビューにも詰め込むことができることに注意してください。

アプリの正しいビューでinitの例に従うと、問題は自然に解決すると思います。

よくなって。

于 2012-08-28T03:25:52.557 に答える
1

そのコードスニペットはどこで使用しますか?あなたが他のいくつかの詳細を提供するならば、私はあなたを助けることができます。その間、いくつかの詳細を待って、私はあなたにあなたの問題に関するいくつかのヒントを与えることができます。

私はあなたが作成するときMBProgressHUD

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];

viewナビゲーションコントローラーの場合は問題nilです。

MBProgressHUDコード(MBProgressHUD.m )をナビゲートすると、次のような制御チェックがあることがわかります。

NSAssert(view, @"View must not be nil.");

そのため、コードは制御を渡さないため停止します。

これを機能させるには、非を渡す必要がありますnil view

UIViewController(たとえば)を拡張するクラスを作成した場合は、viewDidAppearメソッドでHUDを提示できます。viewここで、ViewControllerのが作成および表示されていることを確認します。

または、ウィンドウのサブビューとしてHUDを追加します。詳細については、MBProgressHUDが表示されないことを確認できます。

お役に立てば幸いです。

于 2012-08-27T22:22:40.090 に答える