最初の画面(is initial view controller)をstoryboardではなくプログラムで設定することは可能ですか?初回起動時と2回目以降の起動時で表示する画面を変えたいのですが。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
面倒くさいのでSwift2のままですが、didFinishLaunchingWithOptionsの中でrootViewControllerをすげ替えてやればいいです。
swift
1func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 2 3 var vc: UIViewController? 4 if (/*初回起動*/) { 5 vc = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() 6 } else { 7 vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("second") 8 } 9 self.window?.rootViewController = vc 10 11 return true 12}
上の方は、Is Initial View Controllerに設定したViewController、
下の方は、Storyboard IDにsecondを設定したViewControllerです。
実際に私がやるとしたら、あまり変なことはしたくないので、InitialViewControllerにダミーのViewControllerを設定して、そこで分岐させるかなぁ、と思います。
投稿2016/12/27 08:56
編集2016/12/27 09:02総合スコア16731
0
AppDelegate で、↓でいけませんかね。試してませんが。
swift
1self.window?.rootViewController = イニシャルにしたいViewControllerのインスタンス
投稿2016/12/27 08:28
総合スコア2724
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
AppDelegateにてrootViewControllerを切り替えることで可能です。
1回目はFirstViewController
2回目はSecondViewController
の場合下記の様な感じになります。
UIViewController *viewController; if (1回目ならば) { viewController = [[FirstViewController alloc] init]; } else { viewController = [[SecondViewController alloc] init]; } self.window.rootViewController = viewController; [self.window makeKeyAndVisible];
投稿2016/12/27 08:30
総合スコア100
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/27 08:59