Xcode 4.5 を使い始めたばかりですが、コンソールに次のエラーが表示されました:
警告: ビューがウィンドウ階層にない <ViewController: 0x1ec3e000> に <finishViewController: 0x1e56e0a0> を表示しようとしました。
ビューは引き続き表示され、アプリ内のすべてが正常に動作しています。これは iOS 6 の新機能ですか?
これはビューを切り替えるために使用しているコードです:
UIStoryboard *storyboard = self.storyboard;
finishViewController *finished =
[storyboard instantiateViewControllerWithIdentifier:@"finishViewController"];
[self presentViewController:finished animated:NO completion:NULL];
ベストアンサー1
このメソッドはどこから呼び出していますか? メソッド内でモーダル ビュー コントローラーを表示しようとしたときに問題が発生しましたviewDidLoad
。私にとっての解決策は、この呼び出しをメソッドに移動することでしたviewDidAppear:
。
私の推測では、ビュー コントローラのビューは、ロードされた時点 (メッセージが送信された時点)ではウィンドウのビュー階層にはありませんが、表示された後 (メッセージが送信された時点)にはウィンドウ階層にあります。viewDidLoad
viewDidAppear:
注意
で を呼び出すと、presentViewController:animated:completion:
ビューviewDidAppear:
コントローラのビューが表示されるたびにモーダル ビュー コントローラが常に表示される (当然のことですが) という問題が発生する可能性があります。そのため、表示されているモーダル ビュー コントローラは消えません...
おそらく、これはモーダル ビュー コントローラーを表示するのに最適な場所ではないか、または、表示中のビュー コントローラーがモーダル ビュー コントローラーをすぐに表示するかどうかを決定できるように、追加の状態を保持する必要がある可能性があります。