Xamarin での tvOS 分割ビュー コントローラーの操作

警告

iOS Designer は、Visual Studio 2019 バージョン 16.8 および Visual Studio 2019 for Mac バージョン 8.8 で非推奨とされ、Visual Studio 2019 バージョン 16.9 および Visual Studio for Mac バージョン 8.9 から削除されています。 iOS のユーザー インターフェイスについては、Xcode の Interface Builder が実行されている Mac で直接ビルドすることをお勧めします。 詳細については、「Xcode を使用したユーザーインターフェイスの設計」を参照してください。

分割ビュー コントローラーでは、マスターおよび詳細ビュー コントローラーを同時に画面に左右に並べて表示および管理します。 分割ビュー コントローラーは、マスター ビュー (左側の小さいセクション) および詳細ビュー (右側の大きいセクション) の関連する詳細に、永続的でフォーカス可能なコンテンツを表示するために使用されます。

分割ビューのサンプル

分割ビュー コントローラーについて

前述のように、分割ビュー コントローラーでは、左右に並べて表示されるマスターおよび詳細ビュー コントローラーを管理します。マスターは左側の小さいビューで、詳細は右側の大きい方です。

さらに、マスター ビュー コントローラーは、必要に応じて非表示にしたり表示したりすることもできます。

マスター ビュー コントローラーが非表示

分割ビュー コントローラーは、多くの場合、フィルター可能なコンテンツの一覧を表示するために使用されます。カテゴリはマスター ビューに、フィルター処理された結果は詳細ビューに表示されます。 これは通常、左側にテーブル ビュー、右側にコレクション ビューとして表示されます。

分割ビュー コントローラーを必要とするユーザー インターフェイスを設計する場合、Apple では、変更されないマスターおよび詳細ビュー コントローラーの使用を提案します (構造ではなく、コンテンツのみが変更されます)。 ビュー コントローラーを入れ替える必要がある場合は、変更する必要があるビュー コントローラーのベース (マスターまたは詳細) としてナビゲーション コントローラーを使用することをお勧めします。

Apple には、分割ビュー コントローラーを操作するための次の推奨事項があります。

  • 正しい分割率を使用する - 既定では、分割ビュー コントローラーではマスター ビュー コントローラーに画面の 3 分の 1、詳細ビュー コントローラーに 3 分の 2 を使用します。 必要に応じて、50/50 の分割を使用できます。 適切な割合を選択して、コンテンツが画面にバランスよく表示されるようにします。
  • メイン選択を保持する - 詳細ビューのコンテンツはマスター ビューでのユーザーの選択に応じて変更することができますが、マスター ビューのコンテンツは固定にする必要があります。 さらに、マスター ビューで現在選択されている項目を明確に表示する必要があります。
  • 単一の統合タイトルを使用する - 通常、詳細およびマスター ビューの両方のタイトルではなく、詳細ビューで単一の中央揃えのタイトルを使用します。

分割ビュー コントローラーとストーリーボード

Xamarin.tvOS アプリで分割ビュー コントローラーを操作する最も簡単な方法は、iOS Designer を使用してアプリの UI に追加することです。

  1. Solution PadMain.storyboard ファイルをダブルクリックして、編集用に開きます。

  2. ツールボックスから分割ビュー コントローラーをドラッグし、ビューにドロップします。

    分割ビュー コントローラー

  3. iOS Designer では既定で、ナビゲーション コントローラーとビュー コントローラーをマスター ビューにインストールします。 これがアプリの要件に合わない場合は、単に削除します。

  4. 既定のマスター ビューを削除する場合は、新しいビュー コントローラーをデザイン画面にドラッグします。

    ビュー コントローラー

  5. Control キーを押しながらクリックし、分割ビュー コントローラーから新しいマスター ビュー コントローラーにドラッグします。

  6. ポップアップ メニューから [マスター] を選択します。

    ポップアップ メニューから [マスター] を選択します

  7. マスターおよび詳細ビューの内容を設計します。

    レイアウトの例

  8. C# コードで UI コントロールを操作するために、Properties Pad[ウィジェット] タブに [名前] を割り当てます。

  9. 変更内容を保存し、Visual Studio for Mac に戻ります。

ストーリーボードの使用の詳細については、はじめての tvOS クイック スタート ガイドに関する記事を参照してください。

分割ビュー コントローラーの操作

前述のように、分割ビュー コントローラーは多くの場合、フィルター処理されたコンテンツをユーザーに表示する場合に使用されます。 メイン カテゴリは左側のマスター ビューに表示され、フィルター処理された結果はユーザーの選択に基づいて右側の詳細ビューに表示されます。

マスターと詳細へのアクセス

マスターおよび詳細ビュー コントローラーにプログラムでアクセスする必要がある場合は、分割ビュー コントローラーの ViewControllers プロパティを使用します。 次に例を示します。

// Gain access to master and detail view controllers
var masterController = ViewControllers [0] as MasterViewController;
var detailController = ViewControllers [1] as DetailViewController;

これは配列として表示されます。マスター ビュー コントローラーの最初の要素 (0) と 2 番目の要素 (1) は詳細です。

マスターからの詳細へのアクセス

通常は、マスターでユーザーが選択した内容に基づいて詳細ビューに詳細情報を表示するため、マスターから詳細にアクセスする方法が必要です。

これを行う最も簡単な方法は、マスター ビュー コントローラー クラスのプロパティを公開することです。次に例を示します。

public DetailViewController DetailController { get; set;}

分割ビュー コントローラーで、ViewDidLoad メソッドをオーバーライドし、2 つのビューを連結します。 次に例を示します。

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    // Gain access to master and detail view controllers
    var masterController = ViewControllers [0] as MasterViewController;
    var detailController = ViewControllers [1] as DetailViewController;

    // Wire-up views
    masterController.SplitViewController = this;
    masterController.DetailController = detailController;
    detailController.SplitViewController = this;
}

必要に応じて新しいデータを表示するためにマスターで使用できる詳細ビュー コントローラーでプロパティとメソッドを公開できます。

マスターの表示と非表示

必要に応じて、分割ビュー コントローラーの PreferredDisplayMode プロパティを使用して、マスター ビュー コントローラーを表示したり非表示にしたりすることができます。 次に例を示します。

// Show hide split view
if (SplitViewController.DisplayMode == UISplitViewControllerDisplayMode.PrimaryHidden) {
    SplitViewController.PreferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible;
} else {
    SplitViewController.PreferredDisplayMode = UISplitViewControllerDisplayMode.PrimaryHidden;
}

UISplitViewControllerDisplayMode 列挙型では、マスター ビュー コントローラーを次のいずれかとして表示する方法を定義します。

  • Automatic - tvOS ではマスターと詳細ビューの表示を制御します。
  • PrimaryHidden - マスター ビュー コントローラーが非表示になります。
  • AllVisible - マスターおよび詳細ビュー コントローラーの両方が並べて表示されます。 これは、通常の既定の表示です。
  • PrimaryOverlay - 詳細ビュー コントローラーは、マスターの下で拡張されて覆われます。

現在の表示状態を取得するには、分割ビュー コントローラーの DisplayMode プロパティを使用します。

まとめ

この記事では、Xamarin.tvOS アプリ内での分割ビュー コントローラーの設計と操作について説明しました。