Swift Xcode 現場ではStoryboardでレイアウトを作りますか?という質問に対する回答
執筆のきっかけ
会社の同僚の方が私と同じ言語を勉強していて、色々質問された中で現場はStoryboardが多いですか? など質問をいただいて、その中で答えていく内容を記事にして同じような初学者に役に立てないかと思い、記事を書きました。
Storyboardで全て構築することが多いのか
結論から言うと現場によりますが、私はあまりこのプロジェクトファイルの設計を好みません。
というのも以下の点が問題点として挙げられると思います。
- 画面が100件以上あるプロジェクトなど開くだけで処理が相当重くなる(効率ダウン)
- 以前、Storyboardファイルを開くだけで勝手にレイアウトが変更される不具合があって影響範囲の調査が難しかった
これらの理由から私はStoryboardでの管理を基本的に行なっていません。
A案:xibファイルで管理し、コードで画面遷移を管理する
- MainViewController.swift
- MainViewController.xib
このようにViewController.swift+.xib
をセットで保有しておいて、画面遷移する際はコードで生成して遷移します
let vc = DetailViewController(isSelectedDeckModel: deckModel)
self.navigationController?.pushViewController(vc, animated: true)
※NavigationControllerを利用している場合
B案:StoryboardでSegueを使って画面遷移する方法
ここでは紹介しませんが、前述のStoryboardを利用する方法です。
メリットとしては、A-B-C A-B-C'のような画面がある場合、視覚的に画面が遷移する画面を把握しやすいです。しかしながら、デメリットもあり、先述のようなデメリットと画面数が多いと把握がしにくい点
があげられます。
アリの巣みたいになっているんですよ(震え声)
C案:合わせ技に近い案 Storyboardにxibファイルを紐づける
Storyboardでレイアウトファイルを扱わない為に、Storyboard上のViewControllerのContentView
を削除し、既存のxibファイルと紐づけます。
メリットとしてはStoryboardでレイアウト作業をせず、xibファイルでレイアウト作業を行えます。
処理が重くならない案ですよね。デメリット…とはいえませんが、強いて言うならコードで遷移する処理であれば1行でかけますが、Segue遷移の場合はSegue遷移の処理を用意してそこで分岐などを行う必要があります。コードがファットになる可能性があることです。
最終的に私はどうやっているのか
A案が多いですね。
以前、Storyboardファイルを開くだけで勝手にレイアウトが変更される不具合があって影響範囲の調査が難しかった
この不具合が相当キツかったです。その経験からこういう選択をしています。
Author And Source
この問題について(Swift Xcode 現場ではStoryboardでレイアウトを作りますか?という質問に対する回答), 我々は、より多くの情報をここで見つけました https://zenn.dev/tanukidevelop/articles/09f9dc0941ed59著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol