2012-08-27 8 views
11

MBProgressHUDをアプリケーション内で使用しようとしています。 HUDがビューに追加された時点でエラーが発生しています。MBProgressHUDを使用したアサーションエラー - ビューはnilであってはなりません。

これは、進行状況バーをビューに追加するコードです。

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ファイルは、ビルドフェーズタブのコンパイルソースとヘッダーに含まれています。進捗状況は、フィールド検証を処理するプロセスに追加されています。

答えて

16

こんにちは、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サンプルを実行すると、問題が解決すると思います。

です。

+0

ty。私はこの例ではnavControllerを使用していなかったので、ビューだけからinitを持つべきです。 – StuartM

+0

+1、非常に良い答え... – AppStore

1

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

は、私はあなたのナビゲーションコントローラ用MBProgressHUD

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

viewを作成するときにnilので、問題であることを推測します。

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

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

は、それが制御を渡すことはありませんので、そのコードが停止します。

この機能を有効にするには、 viewを渡す必要があります。

UIViewControllerを拡張するクラスを作成した場合は、viewDidAppearメソッドでHUDを提示できます。ビューコントローラのviewが作成され、表示されていることを確認します。

また、HUDをウィンドウのサブビューとして追加します。詳細はMBProgressHUD not showingをご覧ください。

希望に役立ちます。

関連する問題