- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-12-09T14:56:06+09:00","default:wikiwriter","wikiwriter")
#author("2016-12-09T16:06:04+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の横画面で分割表示となる。
*素から導入する [#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
}
}
}}