UISplitViewController
概要
Container View Controller の一種。コンテンツのフィルタリングやナビゲーション等のトップダウン方式のコンテンツの表示が想定されている。
スタイル
iOS 13 以前は2画面の分割しか対応していなかったが、iOS 14 から複数のカラムに分割できるようになった。現状、double, triple, unspecified の内から選択できる。
https://docs-assets.developer.apple.com/published/8f7b414fba/rendered2x-1591053027.png
https://developer.apple.com/documentation/uikit/uisplitviewcontroller/style
子 ViewController
setViewController(_:for:) でset, viewController(for:) で get できる
子 ViewController は全て UINavigationController でラップされている必要がある
set した ViewController がラップされていなければ、ラップする
任意のカラムの表示/非表示は show(_:), hide(_:) が利用できる
画面遷移
ユーザ操作やSize Class の変更等でカラムが閉じたり開いたりする場合、UISplitViewControllerDelegate 経由で遷移処理がハンドリングされる
Display Mode
「いくつの子 ViewController を画面に表示するか?」「子 ViewController 群をどのように配置するか?」を決めるのが Display Mode。これは直接指定することはできないが、preferredDisplayMode 経由で推奨設定を設定できる。基本的にはこれが尊重されるが、されない場合もある。
https://docs-assets.developer.apple.com/published/a557d26de8/rendered2x-1591388381.png
DisplayMode 間を遷移する用のボタン, ジェスチャはデフォルトで有効だけど、オフにすることができる
presentsWithGetsture
showsSecondaryOnlyButton
Split Behavior
https://docs-assets.developer.apple.com/published/8ff94c73be/rendered2x-1591127836.png
https://developer.apple.com/documentation/uikit/uisplitviewcontroller