Создание интерфейса Основной Подробности

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

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

Что Основная Подробность является интерфейсом?

В интерфейсе основной подробности пользователь может выбрать объекты из списка объектов и проверить выбранные объекты. Основной интерфейс выводит на экран набор объектов, и подробный интерфейс реализует инспектора выбранного объекта. Каждый раз, когда пользователь изменяет выбор в основном интерфейсе, подробный интерфейс обновляется для показа нового выбора. Если никакой объект не выбран, подробный интерфейс ничего не выводит на экран или отключает себя (если это доступно для редактирования). Если многократные объекты выбраны (предполагающий, что множественный выбор позволяется), подробный интерфейс отключен, или это применяется ко всем выбранным объектам. Как правило, такой интерфейс также позволяет пользователям добавлять и удалять объекты из набора.

Какие компоненты Вы используете для реализации интерфейса основной подробности, зависят от приложения. Часто, основной интерфейс реализован табличным представлением, и подробный интерфейс является набором представлений, расположенных выше или ниже основного интерфейса. Рисунок 1 показывает интерфейс основной подробности в приложении актива носителей. В этом примере табличное представление выводит на экран набор мультимедийных объектов, и представления ниже выводят на экран свойства выбранного мультимедийного объекта.

Рисунок 1  интерфейс основной подробности

Создание моделей

Эта статья предполагает, что Вы уже разработали свои классы модели, объекты, инкапсулирующие Ваши данные приложения и обеспечивающие методы для работы на те данные. Интерфейс основной подробности используется для отображения набора объектов модели. Поэтому Ваш корневой объект модели, как ожидают, будет набором этих объектов.

Например, рисунок 2 иллюстрирует объектную схему моделей в приложении актива носителей. В этом примере предположите, что приложение использует основанную на документе архитектуру в который MyDocument (Владелец Файла MyDocument.nib файл), имеет a mediaAssets переменная экземпляра, инициализирующаяся к массиву Мультимедийных объектов.

Рисунок 2  объектная модель

Создание представлений

Основной интерфейс, показанный на рисунке 1, использует табличное представление, в котором каждый столбец в таблице соответствует свойству отображаемых объектов. Обратите внимание на то, что табличное представление выводит на экран атрибуты, такие как заголовок и дата, а также отношения, такие как автор. Свойство автора к - одно отношение (см. рисунок 2), в котором целевой объект является объектом Лица. Можно вывести на экран к - отношения во множестве путей. Например, основной интерфейс выводит на экран только фамилию автора. Подробный интерфейс позволяет Вам выбрать автора из всплывающего меню.

Используя Интерфейсного Разработчика, разметьте свой интерфейс основной подробности, подобный рисунку 1. В этом примере ячейка изображения была перетащена к Столбцу типа image для отображения масштабированной версии изображения носителей, и средство форматирования даты было перетащено к столбцу Date. Отображения столбца Автора фамилия авторов, но могли быть сконфигурированы для отображения меню также путем перетаскивания ячейки всплывающего меню, NSPopUpButtonCell, к столбцу Author.

Создание контроллеров

Затем необходимо подключить представления к моделям через контроллер. NSArrayController специально предназначен для управления выбираемыми наборами объектов. Поэтому это идеально для реализации интерфейса основной подробности. После создания контроллера массива Вы указываете его содержание, чтобы быть Вашим набором объектов модели. Если контроллер массива доступен для редактирования, он может также создать экземпляры моделей и добавить их к набору. Для этого для работы также необходимо сказать контроллеру массива имя класса объект, которым это управляет.

Выполните эти шаги, чтобы создать и сконфигурировать контроллер массива для интерфейса основной подробности:

  1. Создайте контроллер массива путем перетаскивания NSArrayController от палитры Interface Builder Controllers до файла пера, и дополнительно измените имя контроллера. Например, измените имя на MediaAssetsController.

  2. Введите имя класса своей модели в Поле имени Класса объекта на области Attributes окна Info как показано на рисунке 3. В примере приложения актива носителей Вы ввели бы Носители как имя класса.

  3. Отмена выбора, Доступная для редактирования на области Attributes, если Вы не хотите, чтобы пользователь отредактировал модели, или добавил и удалил их из набора.

Рисунок 3  область Attributes контроллера массива

Привязка контроллеров к моделям

Каждое представление и класс контроллера представляют ряд привязки. Можно проверить привязку Разработчика Интерфейса использования объекта путем выбора его и отображения области Bindings в окне Info. Выберите свой контроллер массива в файле пера и выведите на экран его привязку как показано на рисунке 4.

Вы указываете содержание контроллера массива путем конфигурирования contentArray привязка. Например, принятие Владельца Файла поддерживает набор вызванных Мультимедийных объектов mediaAssets, Вы сконфигурировали бы contentArray привязка следующим образом:

  1. Установите Bind to аспект к объекту, поддерживающему набор объектов модели (например, Владелец Файла).

  2. Уезжайте Controller Key пробел.

  3. Установите Model Key Path к имени массива (например, mediaAssets).

Рисунок 4 показывает то, на что область Bindings должна быть похожей когда contentArray привязка показана.

Рисунок 4  область Bindings контроллера массива

Теперь этот контроллер сконфигурирован для управления набором Мультимедийных объектов включая добавление и удаление Мультимедийных объектов от массива. Вернитесь к области Attributes, если Вы хотите изменить поведение по умолчанию этого контроллера — отмена выбора, Доступная для редактирования, если Вы не хотите, чтобы пользователь отредактировал набор.

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

Затем, соединитесь, Ваши представления к Вашему контроллеру массива путем конфигурирования привязки объектов представления — связывают каждое представление в ведущем устройстве и назначают интерфейсы в контроллер массива.

Если, например, Вы хотите представлять доступное для редактирования - одно отношение, устанавливание части этой привязки может быть сложным. Эта статья касается наиболее распространенных типов привязки значения. Посмотрите, что Изображения Отображения Используют Привязку и Реализуют К - Отношения Используя Всплывающие меню для примеров более сложной привязки.

В целом это помогает помнить, что большинству представлений, выводящих на экран некоторое содержание, вызвали привязку value или привязка, содержащая слово «значение».

Кроме того, потому что Вы связываете представление с контроллером, необходимо быть знакомы со свойствами контроллеров. Это основные свойства контроллера массива, который Вы обычно используете в качестве значения Controller Key аспект:

Привязка основного интерфейса

В основном интерфейсе Вы фактически конфигурируете привязку столбцов таблицы, не привязку табличного представления. Даже при использовании специального типа ячейки в столбце таблицы, например, ячейки изображения или NSPopUpButtonCell, Вы конфигурируете столбец таблицы, не ячейку. Привязка для NSTableColumn может измениться в зависимости от его ячейки.

В этом примере каждая строка в табличном представлении должна соответствовать единственному Мультимедийному объекту, и каждый столбец должен вывести на экран свойство того Мультимедийного объекта. Для отображения свойств Вы сначала выбираете столбец таблицы в табличном представлении, выводите на экран область Bindings и показываете value привязка. Вы тогда свяжете столбец таблицы с контроллером arrangedObjects ключ, потому что Вы указываете содержание всего столбца, ни одной ячейки. Сконфигурируйте каждого value привязка для отображения свойства Мультимедийного объекта следующим образом:

  1. Установите Bind to аспект к Вашему объекту контроллера массива. Например, MediaAssetsController.

  2. Установите Controller Key к arrangedObjects (набор выводимых на экран объектов).

  3. Установите Model Key Path к свойству Вы хотите появиться в том столбце. Например, в приложении актива носителей, набор Model Key Path к date в столбце Date.

Рисунок 5 показывает то, на что область Bindings должна быть похожей когда value привязка столбца Title показана.

  Область Figure 5 NSTableColumn Bindings

В случае свойства автора можно установить Model Key Path к author.lastname если Вы хотите просто вывести на экран фамилию. Однако ячейками столбца по умолчанию доступны для редактирования, поэтому когда Вы запустите свое приложение, пользователи будут в состоянии изменить фамилию автора путем редактирования текста в столбце Author. Если Вы не хотите это поведение, выберите столбец и отмените выбор Доступный для редактирования на области Attributes в окне Info.

Обратите внимание на то, что немного Какао уже просматривает дисплейные списки объектов, работающих хорошо с кодированием значения ключа. Controller Key и Model Key Path аспекты привязки связываются для получения значения от связанного объекта. В случае столбца таблицы, Controller Key идентифицирует массив; поэтому возвращенное значение является массивом. Например, столбец таблицы Автора использует arrangedObjects.author.lastname ключевой путь для получения массива фамилий, экземпляров NSString, от связанного объекта.

Привязка подробного интерфейса

Вы связываете представления в подробном интерфейсе так же к способу, которым Вы связываете основной интерфейс за исключением того, что Вы устанавливаете Controller Key для каждой привязки с selection, в настоящее время выбранный объект.

Например, Вы конфигурируете value привязка для поля Текста заголовка в подробном интерфейсе, изображенном на рисунке 1 следующим образом:

  1. Установите Bind to аспект к Вашему объекту контроллера массива. Например, MediaAssetsController.

  2. Установите Controller Key к selection (в настоящее время выбранный объект).

  3. Установите Model Key Path к свойству Вы желаете выведенный на экран в том представлении. Например, title.