#author("2017-01-20T20:37:49+09:00","default:wikiwriter","wikiwriter")
#author("2017-01-20T20:38:19+09:00","default:wikiwriter","wikiwriter")
[[UIKit]]

&tag(UIKit/スプリットビュー);
*目次 [#tcc6d6e4]
#contents
*関連ページ [#oa05efb8]
*参考情報 [#ye6d5218]
-[[Master-Detail Applicationテンプレートを実用的なところまでカスタマイズ! - Qiita:http://qiita.com/Kta-M/items/a62a714aa7657d312600]]
-[[UISplitViewController あれこれ | hirooka.pro:https://hirooka.pro/?p=8105]]

*概要 [#x719f9a1]
-Master Detailテンプレートで作成すると、UISplitViewControllerを使用したサンプルプログラムが作成できる。
-iPadのとき分割ビューになるほか、iPhone 6/6s/7 PlusなどのPlusの横画面で分割表示となる。

#ref(splitview.jpg,50%)
#ref(./splitview.jpg,50%)

*素から導入する [#y68cf2f3]
**作成するプログラム [#wfe9f3c2]
-Single ViewアプリケーションからSplit View Controllerを利用して、Master Detail風のプログラムを自力で作成する。
-iPhoneの場合は、ナビゲーションコントローラーを使った風に。iPhone Plusの横画面とiPadの場合は分割表示とする。
-初期状態は2分割表示可能な場合は同時表示、だめなときはマスター。

**手順 [#ffbb36bd]
-MasterViewControllerとDetailViewControllerを追加。両方ともUITatleViewControllerのサブクラスとする。
-Spit View Controllerをドロップ。そこに矢印をつける。
-Detail側のビューコントローラーを削除。Table View Controllerを追加してナビゲーションバーをつける。
-Split View ControllerをCtrlドロップしてrelationで接続ずけ。マスター側のView Controllerから詳細側のナビゲーションコントローラーに関連づけ(show Datail)。
--[[swift Segueの種類について - スタック・オーバーフロー:http://ja.stackoverflow.com/questions/17290/swift-segue%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6]]
-それぞれのView ControllerのクラスをMasterViewControllerとDetailViewControllerにしておく。

**作り込み [#rdc8a774]
***常に2ペイン表示 [#xc149a94]
-AppDelegateを修正。
#pre{{
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        let splitViewController = self.window!.rootViewController as! UISplitViewController
        splitViewController.delegate = self
        splitViewController.preferredDisplayMode = .allVisible
        return true
    }
}}
***Master側を優先 [#k17c48f6]
-UISplitViewControllerDelegateを利用する。正確にはセカンダリをcollapseするかどうかの判断をするものらしい。
-同じくAppDelegeteに実装。
#pre{{
    func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto primaryViewController:UIViewController) -> Bool {
        return true
    }
}
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS