Поделиться через


Работа с контроллерами разделенного представления tvOS в Xamarin

Предупреждение

Поддержка конструктора iOS была прекращена в Visual Studio 2019 версии 16.8 и Visual Studio 2019 для Mac версии 8.8. В Visual Studio 2019 версии 16.9 и Visual Studio для Mac версии 8.9 этот конструктор удален. Создавать пользовательские интерфейсы iOS рекомендуется непосредственно на Mac с помощью Xcode Interface Builder. Дополнительные сведения см. в статье Проектирование пользовательских интерфейсов с помощью Xcode.

Контроллер разделенного представления представляет и управляет контроллером главного и подробного представления параллельно на экране. Контроллеры разделенного представления используются для представления постоянного, фокусируемого содержимого в главном представлении (меньшем разделе слева) и связанных сведений в представлении сведений (более крупный раздел справа).

Пример разделенного представления

Сведения о контроллерах разделенного представления

Как уже упоминалось выше, контроллер разделенного представления управляет контроллером главного и подробного представления, представленным параллельно, при этом главный элемент является меньшим представлением слева, детализация больше справа.

Кроме того, контроллер главного представления может быть скрыт или показан по мере необходимости:

Главный контроллер представления скрыт

Контроллеры разделенных представлений часто используются для представления списка фильтруемого содержимого с категориями в главном представлении и отфильтрованными результатами в представлении сведений. Обычно это представление таблицы слева и представление коллекции справа.

При разработке пользовательского интерфейса, требующего контроллера разделенного представления, Apple предлагает использовать контроллеры основного и подробного представления, которые не изменяются (только изменения содержимого, а не структура). Если вам нужно переключить контроллеры представления, рекомендуется использовать контроллер навигации в качестве основы контроллера представления, который необходимо изменить (master или detail).

Apple предлагает следующие предложения по работе с контроллерами разделения представлений:

  • Используйте правильный процент разделения. По умолчанию контроллер разделенного представления использует одну треть экрана для контроллера основного представления и две трети для контроллера представления сведений. При необходимости можно использовать разделение 50/50. Выберите правильный процент, чтобы содержимое отображалось на экране.
  • Сохраняйте основной выбор . Хотя содержимое представления сведений может измениться, это ответ на выбор пользователя в главном представлении, содержимое основного представления должно быть исправлено. Кроме того, необходимо четко отобразить выбранный в данный момент элемент в главном представлении.
  • Используйте единый, унифицированный заголовок . Как правило, вы хотите использовать одноцентровое название в представлении сведений вместо заголовка как в представлении сведений, так и в главном представлении.

Разделение контроллеров представления и раскадровки

Самый простой способ работы с контроллерами разделенного представления в приложении Xamarin.tvOS — добавить их в пользовательский интерфейс приложения с помощью конструктора iOS.

  1. На панели решений дважды щелкните Main.storyboard файл и откройте его для редактирования.

  2. Перетащите контроллеры разделенного представления из панели элементов и удалите его в представлении:

    Контроллер разделенного представления

  3. По умолчанию конструктор iOS установит контроллер навигации и контроллер представления в главном представлении. Если это не соответствует требованиям приложения, просто удалите их.

  4. Если удалить основное представление по умолчанию, перетащите новый контроллер представления в область конструктора:

    Контроллер представления

  5. Щелкните элемент управления и перетащите с контроллера разделенного представления на новый главный контроллер представления.

  6. Выберите "Главный" в всплывающем меню:

    Выберите

  7. Проектирование содержимого основных и подробных представлений:

    Пример макета

  8. Назначьте имена на вкладке "Мини-приложение" панели свойств для работы с элементами управления пользовательского интерфейса в коде C#.

  9. Сохраните изменения и вернитесь к Visual Studio для 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.

Доступ к сведениям из master

Так как обычно вы отображаете подробные сведения в представлении сведений на основе выбора пользователя в главном элементе, вам потребуется способ доступа к подробным данным из образца.

Самый простой способ сделать это — предоставить свойство в классе контроллера master View, например:

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

Вы можете предоставлять свойства и методы контроллера представления сведений, которые мастер может использовать для предоставления новых данных по мере необходимости.

Отображение и скрытие образца

При необходимости можно отобразить и скрыть главный контроллер представления с помощью 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.