見出し画像

【Swift】Storyboardの肥大化を防ぐ為に分割Storyboardを運用する方法

本記事はこちらの動画を参考にしています。
日頃私も観ていますのでみなさんチャンネル登録してみてください。

Before

下記のように複雑化したStoryboardをAfterのように整理します。

画像1

After

画像2

そして、Red.Storyboardを開くと、
このように分割されたViewControllerになります。

画像3

既存のStoryboardを分割する方法

分割したいViewControllerをCommand+クリックで複数選択し、
Editor > Refactor to Storyboardを押し、Storyboardの名前を変更します。

これでRed.Storyboardを分割することができます。

画像4

分割したStoryboardを新たに繋げる方法

Storyboardからオブジェクトで以下を選択します。

画像5

そしてControlを押しながら繋げたいViewControllerと繋ぎます。

コードで分割したStoryboardを呼び出す方法

呼び出される側のクラス
※ Red.Storyboardの最初に呼び出されるRedViewController

また、最初に呼び出される為にはIs Initial View Controllerを設定してください。

import UIKit

// 呼び出される側のクラス
class RedViewController: UIViewController {
   
   static func instantiate() {
       UIStoryboard(name: "Red", bundle: nil).instantiateInitialViewController() as! RedViewController
   }

   override func viewDidLoad() {
       super.viewDidLoad()
       // Do any additional setup after loading the view.
   }
}

// 冒頭のYoutubeを参考にinstantiate()書きました。参考元も再生お願いします。

呼び出す側のクラスは下記記述のみでStoryboardに書かれているViewControllerを呼び出すことができます。

let redVC = RedViewController.instantiate()

余談

元々私は、Main.Storyboardを1個置いて、
各自ViewControllerファイルをxibファイルでレイアウトを組むという形を行なっていました。

上記構成によるメリットはアプリ全体イメージがMain.Storyboardで書かれているので分かりやすい点だけはありました。

遷移が一応見れる感じにしてました。

しかしながら、今回の方法であれば細かくXibファイルを分割しないで数個のレイアウトファイルを1つのStoryboardにまとめて分割するのが一番良さそうな感じですね。

最後に

参考元動画、再生&チャンネル登録よろしくお願い致します!!




この記事が気に入ったらサポートをしてみませんか?