[iOS 8] UISplitViewController が iPhone に対応しました

2014.09.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

UISplitViewController for iPhone

UISplitViewController はこれまで iPad でしか利用できませんでしたが、iOS 8 から iPhone でも利用できるようになりました。

iPad アプリを開発したことがある人はどのような恩恵があるかすぐ分かると思いますが、iPhone アプリ開発を中心に行っていた人は馴染み深くはないかも知れません。ということで本稿では UISplitViewController の特徴をおさらいしつつ、iPhone / iPad で利用する方法について解説します。

UISplitViewController って?

UISplitViewController は iOS 3.2 から導入された、2つの View Controller を1画面に収めることができる View Controller です。単純に2つの画面を置くだけではなく、Master - Detail (一覧 - 詳細) という2つの画面の関連性を容易に実装できるような機能を提供しています。例としては iPad の設定画面が分かりやすいですね。

ipad_settings

UISplitViewController を iPhone で使う

UISplitViewController を iPhone で使う方法については、プロジェクトテンプレートの「Master-Detail Application」で確認することができます。ということでまずはサンプルプロジェクトを作ってみましょう。

split_view_controller01

アプリの詳細設定の「Devices」が「Universal」になっていることを確認してください。

split_view_controller02

プロジェクトを作成すると2つのView Controllerクラスが生成されます。一覧画面が「MasterViewController」、詳細画面が「DetailViewController」です。

次に Storyboard を見てみましょう。次のように Split View Controller が起動後に表示する ViewController になっています。さらに Master View Controller と Detail View Controller にそれぞれ Relationship セグエ と呼ばれるセグエが定義されています。これは Split View Controller で Master 側と Detail 側の View Controller を指定するためのセグエです。

split_view_controller04

それでは実行してみましょう。まず iPad では Master に指定した View Controller が左側、Detail に指定した View Controller が左側に表示されるようになります。また、Master 側から Detail 側に対して Show Detail セグエ を貼ることで、Master 側からの操作によって Detail 側の画面を切り替えることができます。

iPhone では Master と Detail は1つの画面に表示することはできません。1つの Navigation Controller で Push (Show) しているような画面遷移になります。

まとめ

UISplitViewController が iPhone で利用できるようになったことで、iPhone と iPad の画面構成を切り分けする量を減らすことができそうです。アプリによっては Storyboard も切り分けなくても良くなるかも知れません。

参考