• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:iPhoneアプリの開発についてです。)

iPhoneアプリの画面遷移でエラーが発生する理由について

このQ&Aのポイント
  • iPhoneアプリで画面遷移を行う際に、特定のコードを実行するとエラーが発生する問題があります。
  • エラーメッセージによると、新たに作られた画面に対してモーダル表示する際にnilのビューコントローラを表示しようとしているようです。
  • 生成されたビューコントローラには正常に情報が設定されていない可能性があるため、エラーが発生していると考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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は、クラス名と同じ名前に しておくのがわかりやすくて無難です。

nylonraw999
質問者

お礼

storyboadでインスタンスしないとstoryboadがnilになってしまうとは知りませんでした。 問題解決しました。ありがとうございます。

関連するQ&A