在 Xamarin 中使用 tvOS 分割檢視控制器

警告

iOS 設計工具在 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 介面產生器的 Mac 上。 如需詳細資訊,請參閱 使用 Xcode 設計使用者介面。

分割檢視控制器同時在畫面上呈現和管理主圖形和詳細數據檢視控制器。 分割檢視控制器可用來在主檢視中呈現持續性、可聚焦的內容(左側較小的區段),以及詳細數據檢視中相關的詳細數據(右側較大的區段)。

範例分割檢視

關於分割檢視控制器

如上所述,分割檢視控制器會管理並排呈現的主圖形和詳細數據檢視控制器,主圖形是左側較小的檢視,右側的 [詳細數據]。

此外,主要檢視控制器也可以視需要隱藏或顯示:

隱藏主要檢視控制器

分割檢視控制器通常用於呈現可篩選內容的清單,主要檢視中的類別和詳細數據檢視中篩選的結果。 這通常會顯示為左側的數據表檢視,以及右側的 集合檢視

設計需要分割檢視控制器的使用者介面時,Apple 建議使用不會變更的主要和詳細數據檢視控制器(只有內容變更,而不是結構)。 如果您需要交換檢視控制器,最好使用瀏覽控制器作為需要變更的檢視控制器基底(主要或詳細數據)。

Apple 有下列使用分割檢視控制器的建議:

  • 使用正確的分割百分比 - 根據預設,分割檢視控制器會針對主要檢視控制器使用三分之一的畫面,而詳細檢視控制器則使用三分之二的畫面。 您可以選擇性地使用 50/50 分割。 選擇正確的百分比,讓您的內容在螢幕上顯示平衡。
  • 保存主要選取 範圍 - 雖然詳細數據檢視上的內容可以變更是回應主檢視中使用者的選取範圍,但主檢視內容應修正。 此外,您應該在主檢視中清楚顯示目前選取的專案。
  • 使用單一統一標題 - 一般而言,您會想要在詳細數據檢視中使用單一置中標題,而不是 [詳細數據] 和 [主檢視] 中的標題。

分割檢視控制器和分鏡腳本

在 Xamarin.tvOS 應用程式中使用分割檢視控制器的最簡單方式,就是使用 iOS 設計工具將它們新增至應用程式的 UI。

  1. Solution Pad 中,按兩下 Main.storyboard 檔案,然後開啟檔案進行編輯。

  2. [工具箱] 拖曳分割檢視控制器,並將它放在 [檢視] 上:

    分割檢視控制器

  3. 根據預設,iOS 設計工具會在主要檢視中安裝流覽控制器和檢視控制器。 如果這不符合應用程式的需求,只要將其刪除即可。

  4. 如果您移除預設的主檢視,請將新的檢視控制器拖曳至設計介面:

    檢視控制器

  5. Control-Click and drag from the Split View Controller to the new Master View Controller.

  6. 從快捷功能表選取 [主圖形]:

    從快捷選單選取 [主圖形]

  7. 設計主檢視和詳細資料檢視的內容:

    範例版面配置

  8. 在 Properties Pad [小工具] 索引標籤中指派名稱,以使用 C# 程式代碼中的 UI 控制件。

  9. 儲存變更並返回Visual Studio for Mac。

如需使用分鏡腳本的詳細資訊,請參閱我們的 Hello, tvOS 快速入門指南

使用分割檢視控制器

如上所述,當您向使用者顯示篩選的內容時,通常會使用分割檢視控制器。 主要類別會顯示在主檢視的左側,而篩選的結果則會根據使用者的選取專案,在 [詳細數據檢視] 右側顯示。

存取主要和詳細數據

如果您需要以程式設計方式存取主要和詳細數據檢視控制器,請使用 ViewControllers 分割檢視控制器的屬性。 例如:

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

它會呈現為陣列,其中主要檢視控制器中的第一個專案 (0)和第二個元素 (1) 是 Detail。

從主圖形存取詳細數據

由於您通常會根據主圖形中的用戶選取專案,在 [詳細數據檢視] 中顯示詳細資訊,因此您需要從主圖形存取詳細數據的方法。

若要這樣做,最簡單的方式是在主要檢視控制器類別上公開屬性,例如:

public DetailViewController DetailController { get; set;}

在分割檢視控制器中,覆寫 ViewDidLoad 方法,並將兩個檢視系結在一起。 例如:

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;
}

您可以在詳細數據檢視控制器上公開屬性和方法,Master 可用來視需要呈現新的數據。

顯示和隱藏主圖形

您可以選擇性地使用 PreferredDisplayMode 分割檢視控制器的 屬性來顯示和隱藏主要檢視控制器。 例如:

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

列舉 UISplitViewControllerDisplayMode 會定義主要檢視控制器的呈現方式,如下所示:

  • 自動 - tvOS 將控制主圖形和詳細數據檢視的呈現。
  • PrimaryHidden - 這會隱藏主要檢視控制器。
  • AllVisible - 並排顯示主要和詳細數據檢視控制器。 這是一般的預設簡報。
  • PrimaryOverlay - 詳細數據檢視控制器延伸至 底下,且由主圖形涵蓋。

若要取得目前的簡報狀態,請使用 DisplayMode 分割檢視控制器的屬性。

摘要

本文涵蓋在 Xamarin.tvOS 應用程式中設計和使用分割檢視控制器。