Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 268 - Multiple MVCs

2017年1月17日:Swift 3に向けて改訂

スタンフォード大学のポール先生の講義もやっとLecture7に入ります。

複数のMVC扱う方法を学んでいきます。

  1. UITabBarController タブバーが下部にあり個別の画面に切り変わります。
  2. UISplitViewController 2つのMVC、Master(主要)とDetail(詳細)を同時に表示します。
  3. UINavigationController カードを積み重ねるようにMVCを表示します。NavigationControllerはトップのタイトルバーだえ表示して、下部のボタンはすべて他のMVCで表示されています。

巷に溢れるSwift入門書で複数のMVCを扱う方法を説明する場合、例外なくstoryboardで実装する方法だけ説明しています。当然この講義のデモもstoryboardを使うのですが、このコースは大学の講義なので、必ずコードによる実装法の説明もあります。

f:id:yataiblue:20150405125119j:plain

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ビューコントローラが得られるという事です。

また今回も何となく理解できたレベルですが、ここまで。