[Xcode 8.1] サンプルコードからTouchBarのAPIを理解する#3 NSTouchBar CatalogのSegmented ControlとGroupの構造

2016.11.04

本記事の目標:Segmented ControlとGroupのサンプルを理解する

こんにちは!モバイルアプリサービス部の加藤潤です。
前回に引き続きNSTouchBar Catalogを理解していきます。
今回はサンプルアプリの左側に表示されるメニューの内、 Segmented ControlGroupがどういう構造で成り立っているかを見ていきます。

実行結果

まず先にアプリとタッチバーの実行結果をご覧ください。

Segmented Control

segmented_control

タッチバー内にSegmented Controlが2つ配置されていて、当然のことながら選択することができます。

Group

group

Groupの方はボタンがタッチバー内にボタンが3つ並んでいます。

Storyboardの構造

それぞれのStoryboardの構造を見てみましょう。

SegmentedControlViewController.storyboard

segmented_control_storyboard

SegmentedControlViewController.storyboardの中を見ると、NSTouchBarの中にNSTouchBarItemが2つあり、各NSTouchBarItemの下にNSViewControllerがぶら下がっています。そしてそのNSViewControllerが管理するViewとしてNSSegmentedControlが存在しています。

また、Object libraryを「segmented」で検索すると、Touch Bar Segmented Controlというコントロールが出てきます。 タッチバー内にSegmented Controlを配置したい場合はこのコントロールを使えば良さそうです。

touch_bar_segmented_control

GroupViewController.storyboard

group_view_controller_storyboard

GroupViewController.storyboardの中を見ると、NSTouchBarの中にNSGroupTouchBarItemがあり、その下にさらにNSTouchBarがあります。 そのNSTouchBarの中にNSTouchBarItemが3つあり、それぞれの中にNSViewController及びNSButtonがぶら下がる形になっています。 NSGroupTouchBarItemはその中にタッチバーを置くことができるコンテナーとしての動きをします。

まとめ

今回はSegmented ControlGroupについて、その構造を見ていきました。
特にNSGroupTouchBarItemは中にタッチバーを持つことができるので、タッチバーの再利用がしやすくなりそうですね。

参考