1. Simmon

    Posted

    Simmon
Changes in title
+【Xcode】Storyboardを複数に分割して管理する方法
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,85 @@
+ビューが増えてくると一つのStoryboadだと見にくくなります。
+そこでStoryboard Referenceを使ってStoryboardを分割して管理する方法を解説していきます。
+
+# デモ
+![story4.gif](https://qiita-image-store.s3.amazonaws.com/0/135478/36c1f4ab-08ba-98f0-c495-f19ede3d7539.gif)
+
+
+# 手順
+
+1. Tabbed Applicationで新規プロジェクトを作成し、First ViewとSecond Viewを削除しておきます。
+![スクリーンショット 2016-10-23 16.31.32.png](https://qiita-image-store.s3.amazonaws.com/0/135478/4235f228-c9ac-0a50-9eac-82ef4dc9be9c.png)
+<br>
+
+2. タブ数分のStoryboardファイルを作成します。⌘+Nでファイルの新規作成画面に移動します。
+今回はタブを3つにするので3つのStoryboardファイルを作成しました。(A.storyboard、B.storyboard、C.storyboard)
+![a.png](https://qiita-image-store.s3.amazonaws.com/0/135478/a6f4175c-af50-6c3e-8c98-3bb04dc6c5e9.png)
+<br>
+
+3. Storyboard Referenceをタブ数分(3つ)設置します。
+![b.png](https://qiita-image-store.s3.amazonaws.com/0/135478/1daebb18-e032-0b3e-df47-d31c76604e8b.png)
+<br>
+
+4. Storyboard ReferenceにStoryboardを設定していきます。
+![c.png](https://qiita-image-store.s3.amazonaws.com/0/135478/d69f143f-42ff-c6ff-8fae-186e9c2f4ca1.png)
+<br>
+
+5. control+ドラッグでStoryboard ReferenceにSegueを接続。
+![d.png](https://qiita-image-store.s3.amazonaws.com/0/135478/1f220149-fc43-d4ee-67f4-0270f908b927.png)
+3つとも同じように設定します。
+![スクリーンショット 2016-10-23 17.01.35.png](https://qiita-image-store.s3.amazonaws.com/0/135478/8ff6d33c-07f3-ae58-a4fa-f929cfe9aeba.png)
+<br>
+
+6. 分割されたStoryboardの設定
+View Controllerを設置して、「Is Initial View Controller」にチェックを入れます。
+Tab Bar Controllerで接続されるのでTab Bar Itemを設置。
+ついでにLabelでStoryboardのIDも入れて置きました。
+これを3つとも同様に設定し、完了です。
+![e.png](https://qiita-image-store.s3.amazonaws.com/0/135478/ba5f342c-7ea0-9b9d-ba6a-260d08534bd6.png)
+
+# 起動時、最初に表示されるタブを設定する
+AppDelegate.swiftにselectedIndexで指定します。
+
+```AppDelegate.swift
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
+ if let initialTab = self.window!.rootViewController as? UITabBarController {
+
+ // 0が一番左のタブ
+ initialTab.selectedIndex = 2 // 左から3つ目のタブを指定
+ }
+ return true
+ }
+
+ func applicationWillResignActive(_ application: UIApplication) {
+ }
+
+ func applicationDidEnterBackground(_ application: UIApplication) {
+ }
+
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ }
+
+ func applicationDidBecomeActive(_ application: UIApplication) {
+ }
+
+ func applicationWillTerminate(_ application: UIApplication) {
+ }
+}
+
+```
+
+# 起動時にロードするStoryboardを変更する
+Tab Bar Controllerを使わずにStoryboardを分割した場合、起動時にロードするStoryboardを任意のStoryboardに指定したい場合があると思います。
+その場合は、プロジェクト→TARGETS→General→Main Interfaceから指定できます。
+![g.png](https://qiita-image-store.s3.amazonaws.com/0/135478/3ec67705-018a-4aab-638c-b1d46c9747a9.png)
+
+# 関連記事
+・[【Swift3】コードで画面遷移を行う方法](http://qiita.com/The_Shimon/items/6c3d6bcd6bfffbfd970d)