- ベストアンサー
iPhoneアプリの画面遷移でエラーが発生する理由について
- iPhoneアプリで画面遷移を行う際に、特定のコードを実行するとエラーが発生する問題があります。
- エラーメッセージによると、新たに作られた画面に対してモーダル表示する際にnilのビューコントローラを表示しようとしているようです。
- 生成されたビューコントローラには正常に情報が設定されていない可能性があるため、エラーが発生していると考えられます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
nav.viewControllersがnilというよりも、 それ以前にnavやself.storyboardが nilになっているんじゃないでしょうか? (1)のメソッドではBookMarkViewControllerを [[BookMarkViewController alloc] init]; で作っていますから、これで作られたViewControllerの中の self.storyboardはnilのはずです。 このため(2)の処理はinstantiateViewControllerWithIdentifierの呼び出しも viewControllersの設定も無視されて、navがnilのままpresentViewController を呼び出して「Application tried to present a nil modal view controller 」 というエラーになったんじゃないでしょうか? BookMarkViewControllerをinstantiateViewControllerWithIdentifierで 作れば、すべてうまく行きそうな気がします。 そして、(2)の処理もNavigationControllerのルートビューとして BookMarkViewControllerがstoryboardで関連付けられているなら NavigationControllerをinstantiateViewControllerWithIdentifierする だけで自動的にstoryboardでBookMarkViewControllerも作られ、 とても簡単になるはずです。 ただ、老婆心ながらNavigationControllerのStoryboardIDを"BookMarkView" とするのはやめた方がよいと思います。一見BookMarkViewControllerの StoryboardIDに見えますので。StoryboardIDは、クラス名と同じ名前に しておくのがわかりやすくて無難です。
お礼
storyboadでインスタンスしないとstoryboadがnilになってしまうとは知りませんでした。 問題解決しました。ありがとうございます。