【Swift UIKit】UITableViewControllerのStaticCellの使い方と注意点

この記事からわかること
- SwiftのUIKitでUITableViewControllerのStaticCellの使い方と注意点
- Dynamics Prototypesとの違い
- iPhoneの設定画面のようなUIの作り方
- 「Static table views are only valid when embedded in UITableViewController instances」エラーの解決法
index
[open]
\ アプリをリリースしました /
SwiftのUIKitで使えるUITableViewControllerとStaticCellの使い方と注意点をまとめていきます。
UITableViewControllerとは?
公式リファレンス:UITableViewController
@MainActor open class UITableViewController : UIViewController, UITableViewDelegate, UITableViewDataSource
UITableViewControllerはViewControllerの1つでテーブルビューを管理するためのコントローラークラスです。通常のViewControllerでは直下のView内で様々なUI部品を設置して使用しますがUITableViewControllerは直下にTableViewのみが設置され画面一杯にテーブルビューが広がります。

普通のViewControllerの中にもUI部品としてテーブルビューを使用することも可能なので、テーブルビューしか使用しない場合に使用されることが多いですが拡張性が低くなってしまうので使い所には注意が必要です。UITableView
の使い方に関しては以下の記事を参考にしてください。
StaticCellとDynamics Prototypes
UITableViewControllerで設置できるテーブルのセルには「StaticCell(静的セル)」と「Dynamics Prototypes(動的セル)」の2種類があります。ストーリーボードからではUITableViewControllerのインスペクタから変更することができます。

StaticCell
StaticCellは表示させたいセルがiPhoneの設定画面のような決まった項目を表示させる時に使用します。コードではなくStoryboardを使って手軽に実装できるのが大きなメリットです。
Dynamics Prototypes
Dynamics Prototypesはデータのリスト表示など動的に変化する項目を表示させる時に使用します。こちらはコードからセルに表示させるデータを指定します。
StaticCellの使い方と注意点
StaticCellを使用する手順
- Storyboardから新規でTableViewControllerを追加
- セルの種類をStaticCellに変更
- セクション数やセルを構築

上記のようにコードを記述することなくテーブルビューを構築することができます。
Static table views are only valid when embedded in UITableViewController instances
StaticCellを使用するにはTableViewControllerであることが条件になります。しかしTableViewControllerは自動的に画面一杯にビューが広がるため他のUIを加えることが難しくなります。
以下のように普通のUIViewControllerにTableViewを追加してStaticCellを使用すると「Static table views are only valid when embedded in UITableViewController instances」といったエラーになってしまいます。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。