SwiftでのStoryboard管理方法

こんばんわ、毒きのこです。

新型iPhoneが発表になって連日TLのiOS開発者がXcode9GMをいじり倒したり色々シミュレーターでアプリの動作報告をしてくれてますね。僕は特に何の役にもたたないので、今日はStoryboardの管理の仕方なんかを書いて見ました。

iOSアプリでStoryboardを使った画面遷移など皆さんどうされてるでしょうか?

各ViewControllerに毎回Storyboardから該当のViewControllerを取得し、って書いてくとIdentifierのタイプミスなど起きたり、またStoryboard上でStoryboard IDを変えた時など、宣言した各場所全て書き換えたりと大変ですよね。

そこで僕なんかはStoryboardBuilder.swiftのようなものを用意し、そこに全て宣言し管理するようにしています。

シングルトンになっていて、それぞれViewController上で以下のように取得するようなイメージです。

StoryboardBuilder.sharedInstance.”呼び出したいコントローラー名” みたいに生成します。これならStoryboard上でStoryboard IDを後から変えた時とかも、StoryboardBuilder.swift内だけを修正するだけでいいですよね。

他にはもっとシンプルにするなら、.storyboardのファイル名とStoryboard IDを照らし合わせて取得する方法なんかも。

UIViewControllerを拡張したクラスを作成。ここでコントローラー名が引数に指定されたら、それと同じ名前のStoryboardを取得し該当するViewControllerを返す、という感じです。

こちらは上のUIViewController+Extended.swiftから指定された、プロジェクト名.コントローラー名のコントローラー部分を切り出して文字列として返すクラスですね。

この2つを用意しておけば、各ViewControllerで以下のように書くだけで該当のStoryboardからViewControllerを取得出来ます。

これでTutorialViewController.storyboard上のTutorialViewController、そこからインスタンス生成出来るようになります。

今日はここまで。
それでは良いSwiftライフを〜

スポンサーリンク
336 x 280 レクタングル(大)
336 x 280 レクタングル(大)