Swiftで遊ぼう! - 268 - Multiple MVCs
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- 初心者はここから!-> 50オヤジでもできるiOS開発
- 私の本業、オフィシャルなブログ-> Life-LOG
- Swift 3 対応
2017年1月17日:Swift 3に向けて改訂
スタンフォード大学のポール先生の講義もやっとLecture7に入ります。
複数のMVC扱う方法を学んでいきます。
- UITabBarController タブバーが下部にあり個別の画面に切り変わります。
- UISplitViewController 2つのMVC、Master(主要)とDetail(詳細)を同時に表示します。
- UINavigationController カードを積み重ねるようにMVCを表示します。NavigationControllerはトップのタイトルバーだえ表示して、下部のボタンはすべて他のMVCで表示されています。
巷に溢れるSwift入門書で複数のMVCを扱う方法を説明する場合、例外なくstoryboardで実装する方法だけ説明しています。当然この講義のデモもstoryboardを使うのですが、このコースは大学の講義なので、必ずコードによる実装法の説明もあります。
ViewControllerのプロパティを使ってサブMVCを扱うんです。
var viewControllers: [UIViewController] { get set }
UIViewController自身が、Split View、Tab View、もしくはNavigation Controllerのどれにいるのか知るために次のプロパティを持っています。
var tabBarController: UITabViewController? { get } var splitViewController: UISplitViewController? { get } var navigationController: UINavigationController? { get }
次のように使うんですよね
if let detailVC: UIViewController = splitViewController?.viewControllers[1] {...}
もし現在スプリットビューコントローラーであれば、オプショナルチェインを使ってsplitViewControllerというプロパティがあるかどうか判断します。viewContorollesアレー([0]がMasterビューで、[1]がDetailビュー)を持っているので、Detailビューコントローラが得られるという事です。
また今回も何となく理解できたレベルですが、ここまで。