XCode 12.5 日本語化計画:Swift Tutorials
macOS アプリの作成
セクション 5
SwifUI のライフサイクルを使用してアプリを作成すると、システムは、最前面のウィンドウを閉じるための項目やアプリを終了するための項目など、一般的に必要な項目を含むメニューを自動的に作成します。 SwiftUI を使用すると、完全にカスタムのコマンドだけでなく、動作がビルトインされた他の一般的なコマンドも追加できます。
このセクションでは、ユーザがサイドバーを切り替えて、ドラッグして閉じた後に元に戻せるようにする、システム提供のコマンドを追加します。
ステップ 1
MacLandmarks ターゲットに戻り、macOS アプリを実行し、リストと詳細ビューの間の仕切りを左端までドラッグします。
マウスボタンを離すと、リストが消えて元に戻せなくなります。これを修正するコマンドを追加しましょう。
ステップ 2
LandmarkCommands.swift という新しい Swift ファイルを追加し、macOS と iOS の両方を含むようにそのターゲットを設定します。
共有した LandmarkList は最終的にこのファイルで定義する型のいくつかに依存するため、iOS もターゲットにします。
ステップ 3
SwiftUI をインポートし、計算された body プロパティを使用して、Commands プロトコルに準拠する LandmarkCommands 構造体を追加します。
ビュー構造体と同様に、Commands 構造体には、ビューの代わりに Commands を使用する場合を除いて、ビルダーセマンティクスを使用する計算された body プロパティが必要です。
ステップ 4
SidebarCommands コマンドを body (本体)に追加します。
この組み込みコマンドセットには、サイドバーを切り替えるためのコマンドが含まれています。
アプリ内でコマンドを使用するには、コマンドをシーンに適用しなければなりません。これを次に行ないます。
ステップ 5
LandmarksApp.swift ファイルを開き、 commands(content:) シーン修飾子を使用して LandmarkCommands を適用します。
scene 修飾子は、ビューの代わりにシーンにそれらを適用することを除いて、ビュー修飾子と同じように機能します。
ステップ 6
macOS アプリを再度実行し、[View(表示)] > [Toggle Sidebar(サイドバーの切り替え)] メニューコマンドを使用してリストビューを復元できることを確認して下さい。
残念ながら、Commands には watchOS の利用がないため、watchOS アプリのビルドには失敗します。次にそれを修正します。
ステップ 7
メインウィンドウグループを抽出し、commands に条件付きコンパイルを適用します。
watchOS アプリが再びビルドされます。
LandmarkCommands.swift
LandmarkCommands.swift
LandmarksApp.swift
LandmarksApp.swift
セクション 1 | セクション 2 | セクション 3 | セクション 4 |
セクション 5 | セクション 6 | セクション 7 | |
セクション 101 | セクション 102 | セクション 103 | セクション 104 |
セクション 105 | セクション 106 | セクション 107 |