Работа с контроллерами разделенного представления 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.
На панели решений дважды щелкните
Main.storyboard
файл и откройте его для редактирования.Перетащите контроллеры разделенного представления из панели элементов и удалите его в представлении:
По умолчанию конструктор iOS установит контроллер навигации и контроллер представления в главном представлении. Если это не соответствует требованиям приложения, просто удалите их.
Если удалить основное представление по умолчанию, перетащите новый контроллер представления в область конструктора:
Щелкните элемент управления и перетащите с контроллера разделенного представления на новый главный контроллер представления.
Выберите "Главный" в всплывающем меню:
Проектирование содержимого основных и подробных представлений:
Назначьте имена на вкладке "Мини-приложение" панели свойств для работы с элементами управления пользовательского интерфейса в коде C#.
Сохраните изменения и вернитесь к 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.