質問: iPhone開発をするために、objective-cを使っているのですが、画面繊維がよくわかりません。 ・ボタンを押したタイミングで下記を実行すると正常動作します。 ・viewDidLoadで下記を実行すると Warning: Attempt to present on whose view is not in the window hierarchy!と出て、画面遷移しません。 ・viewDidAppearで行うと強制終了します。 原因がわかりますでしょうか? ・問題箇所 ViewMain *VCViewMain =[[ViewMain alloc] initWithNibName:@"ViewMain" bundle:nil]; [self presentModalViewController:VCViewMain animated:NO];
回答: 色々な原因が考えられますが、まず viewDidLoad で実行した場合に件の警告が表示されるのは、内容どおりこの時点では ViewController がまだ View のヒエラルキーに追加されていないからです。これは仕様です。 問題は何故、viewDidAppear で行うと強制終了するか。この時、コンソールにエラーなどは表示されないのでしょうか?されないのであれば、viewDidAppearの一行目にブレイクポイントを打って、具体的にどの処理でアプリがクラッシュするか教えていただけますでしょうか?できれば viewDidAppear をそのままコピペしていただければ幸いです。地味に、[super viewDidAppear]を入れ忘れたとかもあるかもしれないので。 蛇足ですが、ViewMain クラスと ViewMain.xib が正しく紐付けられていれば、initWithNibName ではなく、init だけで十分なはずです。