知っておくべき重要なことは、ストーリーボードを使用しているということです。私はdidFinishLaunchingWithOptionsで次のことをしています:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
FirstView *mvc = [sb instantiateViewControllerWithIdentifier:@"FirstView"];
SecondView *tvc = [sb instantiateViewControllerWithIdentifier:@"SecondView"];
NSArray* controllers = [NSArray arrayWithObjects:[self addNavigationToViewController:mvc], [self addNavigationToViewController:tvc], nil];
// add controllers to a table view
UITabBarController *tb = [[UITabBarController alloc] init];
[tb setViewControllers:controllers];
[self.window setRootViewController:tb];
addNavigationToViewControllerは、UINavigationController内にViewControllerを埋め込むために使用しているメソッドです。
このアプリを実行するinitWithCoder
と、FirstViewのが2回呼び出されます。理由はわかりましたが、正しい方法がわかりません。
基本的に、FirstViewは初期シーンであるため(属性インスペクターに「初期ビューコントローラーです」というビューを設定するチェックマークがあります)、2回目は初期化されます。
FirstView *mvc = [sb instantiateViewControllerWithIdentifier:@"FirstView"];
[初期シーン]のチェックを外すと、「指定されたエントリポイントが設定されていない可能性があります」というメッセージが表示されます。
私は何か間違ったことをしていますが、それが何であるかわかりません。
ヒントをいただければ幸いです。