このページの本文へ

前へ 1 2 3 4 5 6 次へ

車とスマホがつながるSDLの世界 第8回

SDLのライブラリを組み込み、車載機のユーザーインターフェースを実現してみよう!

SDL対応アプリ開発環境の構築その4~白紙のiOSプロジェクトから作るSDLアプリ

2019年01月13日 11時00分更新

文● 柴田文彦 編集●アスキー編集部

提供: トヨタ自動車株式会社

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

サブメニューを含むメニューを設定する

 今回の最後に、車載機側の画面に表示するメニューの内容を設定してみよう。画面の右上にある「≡」のような、いわゆるハンバーガーメニューと呼ばれるボタンによって開くメニューだ。

 そのメニュー項目には、一般のパソコンのメニューと同じように、サブメニューを持つものと持たないものがある。サブメニューを持たないメニュー項目は、それを選択した時点で、それに設定されたコマンドが実行される。サブメニューを持つメニュー項目は、それを選択することで、また別のメニュー選択画面を表示する。

 メニュー項目は、すべてSDLMenuCellオブジェクトとして作成する。この例では、サブメニューを持たないメニュー項目を、cel00という名前で作成している。実際に画面に表示するタイトルは「Menu Item without Submenu」だ。それに対してサブメニューを持つものをcell01として作成する。タイトルは「Menu Item with Submenu」とした。そこから開くサブメニューの項目はcell10とcel11だ。

 タイトルは、それぞれ「Submenu Item A」と「Submenu Item B」のように設定している。サブメニューを持つ項目は、そこから開くサブメニューの項目を指定して作る必要があるので、cell01よりも先にcell10とcell11を作成しておく必要がある。下のコードでは、cel00→cell10→cel11→cell01という順番でSDLMenuCellクラスのオブジェクトを作成しているのはそのためだ。

let cell00 = SDLMenuCell(title: "Menu Item without Submenu", icon: nil, voiceCommands: nil) { (triggerSource: SDLTriggerSource) in
    print("First Menu Item Selected: \(triggerSource)")
}
 
let cell10 = SDLMenuCell(title: "Submenu Item A", icon: nil, voiceCommands: nil) { (triggerSource: SDLTriggerSource) in
    print("Submenu Item A Selected: \(triggerSource)")
}
let cell11 = SDLMenuCell(title: "Submenu Item B", icon: nil, voiceCommands: nil) { (triggerSource: SDLTriggerSource) in
    print("Submenu Item B Selected: \(triggerSource)")
}
let cell01 = SDLMenuCell(title: "Menu Item with Submenu", icon: nil, subCells:[cell10, cell11])

 作成したメニューセルは、SDLManagerの中のスクリーンマネージャのmenuプロパティに、配列として設定するだけで機能するようになる。ここで設定するのは、「≡」ボタンを押すと最初に表示されるルートのメニュー画面に設定するメニューセルcell00とcell01だけだ。

self.sdlManager.screenManager.menu = [cell00, cell01]

 以上のメニューに関するコードも、スクリーンマネージャを使って更新するものなので、これまでのUI要素と同様、スクリーンマネージャのbeginUpdates()とendUpdates {}の間に入れればいい。

 結果を画面で確認しよう。アプリ画面右上のいわゆる「≡」マークの部分をクリックすると、まず2つのメニュー項目を持つルートレベルのメニューが表示される(図19)。

図19:車載機のアプリ画面の右上にある「≡」ボタンをクリックすると、2つのメニュー項目が表示される。サブメニューを持たないもの(上)と持つもの(下)だ

 このうち、上の「Menu Item without Submenu」コマンドは、サブメニューを持たず、特に動作を設置していないので、クリックしても元のアプリ画面に戻る。それに対して下の「Menu Item with Submenu」の方は、クリックすると、そのメニュー項目に設定してある2つのサブメニュー項目を持つ新たなメニュー画面に切り替わる(図20)。

図20:サブメニューを持つ方のメニュー項目をクリックすると、メニュー画面は2つのサブメニューを選択可能なものに切り替わる

 これらのサブメニューについても、意味のある動作は何も設定していないので、クリックすれば結局は元のアプリ画面に戻る。ただし、各メニュー項目には、選択された際にコンソールにログを表示するようにしてあるので、Xcodeのプロジェクトウィンドウ内のコンソールで確認できるはずだ(図21)。

図21:メニュー操作の状況は、Xcodeのコンソールで確認できる。サブメニューを持つメニュー項目は、コマンドではなくサブメニューを開くだけなので、ログは出力していない

 以上、iOSについて、Xcodeの標準的なアプリプロジェクトを作成するところから始め、そこにSDLのライブラリを組み込んで、基本的な車載機のユーザーインターフェースを実現する方法を、かいつまんで解説した。オリジナルのSDL対応iOSアプリの開発の参考にしていただきたい。

■関連サイト

(提供:トヨタ自動車株式会社)

前へ 1 2 3 4 5 6 次へ

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,249
2
【Amazon.co.jp限定】Meta Quest 3S(128GB)購入で『Gorilla Tag』ゲームを無料プレゼント|VRヘッドセット|メモリが33%増加 | 2倍のグラフィック処理性能 |ワイヤレスのVR体験
【Amazon.co.jp限定】Meta Quest 3S(128GB)購入で『Gorilla Tag』ゲームを無料プレゼント|VRヘッドセット|メモリが33%増加 | 2倍のグラフィック処理性能 |ワイヤレスのVR体験
¥50,490
3
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,290
4
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
¥20,800
5
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥640
6
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
7
Kindle Paperwhite シグニチャーエディション (32GB) 7インチディスプレイ、明るさ自動調整、色調調節ライト、12週間持続バッテリー、広告なし、メタリックブラック
Kindle Paperwhite シグニチャーエディション (32GB) 7インチディスプレイ、明るさ自動調整、色調調節ライト、12週間持続バッテリー、広告なし、メタリックブラック
¥23,980
8
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
9
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ブラック, 1m)
¥1,680
10
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン