このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第74回

カレンダーとデイトを理解

スプリットビューコントローラーを使って画面を分割表示する

2018年01月29日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 前回は、いわば番外編的なトピックとして、iOSにおけるカレンダーや日時の扱い方の基本的な部分を取り上げました。というのも、その前の回に「万年日めくりカレンダー」を作成した際にCalendarやDateについて詳しく説明することができなかったので、それについて補足する必要を感じたからでした。

 思い出してみると、ここ最近の流れとしては、カレンダーや日時といった基本的なデータの処理ではなく、iOSのちょっと特殊なビューコントローラーを使ってみる、というところにあったのです。どこが特殊かというと、ほかの(複数の)ビューコントローラーを管理して複数ページの表示を切り替えるような機能を持っているという点でした。例えば、ナビゲーションコントローラーやタブバーコントローラー、そして日めくりカレンダーで使ったページビューコントローラーがそれにあたります。

 そして今回は、同じ意味で特殊なビューコントローラーであるスプリットビューコントローラー(UISplitViewController)を扱います。これはiOSのビューコントローラーの中では比較的新しいもので、iPadの大きな画面を有効に活用するために考えられたものです。その名前からもわかるように、画面を分割(スプリット)して、2つの異なるビューコントローラーの内容を表示できるようにします。Swift Playgroundsで使えるアプリ画面は、大きさも縦横比もどちらかというとiPhoneに近いのですが機種としてはあくまでiPadなので、iPhoneでは例外(「Plus」モデルのランドスケープ画面)を除いて有効に機能しないスプリットビューコントローラーも使えるのです。

とにかく画面を分割表示してみる

 それではさっそくスプリットビューコントローラーを使ってみましょう。すでに述べたように、これも一種のビューコントローラーなので、プレイグラウンドのライビューに直接張り付けることができます。もちろんそれだけでは意味がないので、スプリットビューコントローラーの配下に2つのビューコントローラーを設定します。いずれもデフォルトのUIViewControllerクラスから作ったオブジェクトで、背景色をオレンジとグリーンに塗り分けただけのものです。

スプリットビューコントローラーを使って画面を2分割し、2つのビューコントローラーのビューをそれぞれの領域に表示するための最小限のプログラムです

 2つのビューコントローラーは、スプリットビューコントローラーのviewControllersというプロパティに配列としてセットすればいいのです。preferredDisplayModeというプロパティは、iPadの9.7インチモデルなら、特に設定しなくても2つのビューコントローラーの画面が表示されますが、12.9インチでは.allVisibleに設定しないと、1つしか表示されません。デフォルトでは、画面の縦横比や面積に応じて自動的に表示構成が変わるのです。どんな状況でも2つの画面を常に表示しておくためには、.allVisibleに設定しておくのが安心です。

 これでとりあえず2つのビューコントローラー画面を同時に見ることができる状態は確保できました。もちろんこれだけでは何の役にも立たないので、それぞれのビューコントローラーに相応の機能を持たせていきましょう。

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!