Быстрый запуск для представлений набора
Этот быстрый запуск дает Вам быстрое, практическое введение в представления набора. Основная цель представления набора состоит в том, чтобы визуально расположить группу объектов в организованный вид с каждым отдельным объектом, получив его собственное представление в большем представлении набора.
Перед использованием NSCollectionView класс, у Вас должно быть существующее Приложение Какао оконное в XCode. Вы запускаете путем создания класса модели в приложении, которое будет хранить все данные для каждого отдельного объекта, который Вы хотите вывести на экран. Затем в Интерфейсном Разработчике Вы добавляете представление набора и контроллер массива к Вашему проекту. Вы также создадите массив, который будет хранить различные объекты, которые Вы хотите вывести на экран и гарантировать, что все остается в синхронизации, Вы создадите различную привязку между представлением набора, контроллером массива и массивом. Когда Вы закончите, Ваше представление набора выведет на экран все Ваши объекты организованным способом.
Это учебное руководство принимает основное понимание шаблон разработки Контроллера представления Модели, привязка и соответствие наблюдения значения ключа.
Установите проект
Откройте свое приложение Какао оконное.
Создайте класс модели, который будет хранить данные каждого объекта.
Это учебное руководство использует простое
PersonModelкласс как класс модели в качестве примера. Каждый экземпляр этого класса состоит из двух частей данных: строковый объект представление имени лица и другой строки, представляющей их размещение. Обе из этих переменных являются свойствами и поэтому объявлены в заголовочном файле и синтезированы в файле реализации. Следующий фрагмент кода что простой заголовочный файл для aPersonModelкласс был бы похож:#import <Cocoa/Cocoa.h>
@interface PersonModel : NSObject {NSString * name;
NSString * occupation;
}
@property(retain, readwrite) NSString * name;
@property(retain, readwrite) NSString * occupation;
@end
И файл реализации:
#import "PersonModel.h"
@implementation PersonModel
@synthesize name;
@synthesize occupation;
-(void) dealloc {[name release];
[occupation release];
[super dealloc];
}
@end
Это
PersonModelкласс является хорошим примером простого объекта модели. Это инкапсулирует и обеспечивает доступ к ряду данных и KVC совместимый. Аналогично, также очень просто создать многократные экземплярыPersonModelкласс, и каждый может хранить уникальные данные и быть получен доступ индивидуально. Вы, конечно, не требуетесь тиражировать этот класс в качестве примера, но он обеспечит хорошую начальную точку для понимания внутренних работ представления набора.
Сделайте представления
Откройте файл пера главного окна в Интерфейсном Разработчике.
Добавьте
NSCollectionViewвозразите против окна своего приложения и измените размеры его к своим желаемым спецификациям.Заметьте, что два новых элемента были автоматически добавлены к Вашему перу: “Элемент Представления Набора” и новое
NSViewобъект:“Элемент Представления Набора” является контроллером, который добьется потока информации между ячейками в Вашем представлении набора и объектах модели (т.е.
PersonModelобъект), которые предоставляют данные для Ваших представлений. Вы сконфигурируете это позже.Новое представление представляет шаблон для отдельной ячейки в Вашем представлении набора. Вам решать для конфигурирования этого представления для взгляда точно, как отдельная ячейка посмотрит в представлении набора.
Например, для отображения a
PersonModelобъект, представление должно было бы содержать две текстовых метки, каждую достаточно ширины для отображения полного имени и размещения лица. Это могло выглядеть примерно так:
Добавьте все свои требуемые объекты (текстовые метки, представления изображения, и т.д.) к недавно создаваемому представлению. Измените размеры ячейки, чтобы быть желаемым размером.
Помните, Вы захотите вывести на экран информацию, хранящуюся в Вашем классе модели, поэтому помните это, поскольку Вы разрабатываете свое расположение ячейки. Используя
PersonModelкласс как пример, каждая ячейка содержит две текстовых метки (см. выше представления): метка для строки имени и метка для строки размещения.
Сделайте контроллер массива и массив
Добавьте
ArrayControllerвозразите против своего пера.Прежде, чем завершить следующий шаг, необходимо удостовериться, что Ваш класс объекта модели завершен и что это содержит все данные, которые Вы хотите вывести на экран. Каждое свойство в Вашем объекте модели необходимо для этого следующего шага, так наличие полного объекта модели требуется перед продолжением.
В Инспекторе Атрибутов для Вашего
ArrayController, укажите режим его объектного контроллера как «Класс», дайте ему надлежащее имя для своего класса объекта модели и добавьте свойства от своей модели, что Вы хотите быть связанными с каждым представлением вNSCollectionViewк «Ключевому» списку.Если
PersonModelкласс использовался, Инспектор Атрибутов контроллера массива посмотрит следующим образом:
В Вашем файле контроллера в XCode (см. примечание ниже), создайте
NSMutableArrayобъект, и делает его свойством, как Вы сделали с данными в Вашем классе модели. Этот массив будет использоваться для хранения всех объектов, которые Вы хотите вывести на экран в Вашем представлении набора. Позже, Вы добавите методы, чтобы удостовериться, что этот массив KVO совместимый, и может быть соединен с Вашим представлением набора.
Создайте привязку контроллера массива
Необходимо связать свойство массива, которое Вы только что создали в XCode к ArrayController это существует в Вашем файле пера. Затем Ваше представление набора будет поднято трубку для отображения содержания что ArrayController в настоящее время связывается с. Поэтому любое время, которое изменение внесено в свойстве массива в Вашем файле контроллера в XCode, это инициирует изменение в ArrayController в InterfaceBuilder, который тогда инициирует изменение в Вашем представлении набора, и все останется в синхронизации. Эти следующие шаги включают использование привязки, которую не касается эта статья. Для получения дополнительной информации о привязке, посмотрите Bindings Programming Guide.
Во-первых, поднимите трубку свойство массива контроллера к
ArrayControllerобъект в пере.Для этого щелкните по Вашему
ArrayControllerобъект, перейдите к его Инспектору Привязки и свяжите его довольный массив к Вашему объекту контроллера. Затем укажите его ключевой путь модели к тому, что имя Вашего массива. Это должно выглядеть подобным этому:
Свяжите свое представление набора с Вашим контроллером массива.
Выберите Ваш
NSCollectionViewобъект, перейдите к окну «Bindings Inspector», и в довольном раздел, свяжите свое представление набора с опцией «Array Controller». Также необходимо указать Ключ Контроллера как «arrangedObjects». По существу это позволяет Вашему контроллеру массива говорить Вашему представлению набора отображать любые объекты, которыми управляет контроллер массива.
Свяжите представления с данными
Привязка подпредставлений
Для каждого объекта (т.е. NSImageView объекты, NSTextLabel объекты, и т.д.) в Вашем Элементе Представления Набора, делают следующее:
Выберите его и перейдите к его Инспектору Привязки.
Свяжите подпредставление с элементом представления набора и свяжите свойство объекта подпредставлений с надлежащим свойством модели путем установки его Ключевого Пути Модели как
representedObject.<your property>.Например, Вы связали бы этикетку с ключевым путем модели
respresentedObject.name.

Завершенный и выполненный представление набора
Существует еще только два шага для подъема представления набора и выполнения. Во-первых, необходимо сделать свойство массива в классе контроллера в значении ключа XCode, наблюдающем совместимый, и во-вторых, необходимо создать некоторые данные для отображения.
Сделайте свой массив KVO совместимый.
Для этого примера мы предположим, что Вы храните все свои объекты данных (
PeopleModelобъекты) в массиве. Для создания этого массива KVO совместимый необходимо добавить несколько методов к классу контроллера, так, чтобы другие объекты (в этом случае, ВашArrayController) если изменения внесены в массив, может быть уведомлен. Если Вы используете простое, список необходимых комбинаций функций доступен в руководстве по программированию KVC, ноNSMutableArray, эта группа функций должна работать:-(void)insertObject:(PersonModel *)p inPersonModelArrayAtIndex:(NSUInteger)index { [personModelArray insertObject:p atIndex:index]; } -(void)removeObjectFromPersonModelArrayAtIndex:(NSUInteger)index { [personModelArray removeObjectAtIndex:index]; } -(void)setPersonModelArray:(NSMutableArray *)a { personModelArray = a; } -(NSArray*)personModelArray { return personModelArray; }Создайте некоторые данные для своего представления набора для отображения.
В Вашем классе контроллера создайте
-(void)awakeFromNibметод, инициализирующий объекты модели, которые Вы хотите поместить в Ваше представление набора.Кроме того, в этом методе создайте
NSMutableArrayобъект, который будет использоваться для временного содержания всех этих данных.Затем добавьте каждый из своих объектов модели к Вашему недавно создаваемому массиву.
Когда Вы будете сделаны, используйте
(void)setPersonModelArrayметод для установки свойства массива в недавно заполненный массив. Установка массива инициирует обновление Вашего представления набора.Демонстрационный бит кода, создающего трех человек объекты и помещающего их в массив, мог бы посмотреть следующим образом:
- (void)awakeFromNib { PersonModel * pm1 = [[PersonModel alloc] init]; pm1.name = @"John Appleseed"; pm1.occupation = @"Doctor"; PersonModel * pm2 = [[PersonModel alloc] init]; pm2.name = @"Jane Carson"; pm2.occupation = @"Teacher"; PersonModel * pm3 = [[PersonModel alloc] init]; pm3.name = @"Ben Alexander"; pm3.occupation = @"Student"; NSMutableArray * tempArray = [NSMutableArray arrayWithObjects:pm1, pm2, pm3, nil]; [self setPersonModelArray:tempArray]; }Ваше представление набора должно теперь быть в порядке и выводящий на экран все Ваши объекты хорошим, организованным способом. Поздравления по случаю окончания Вашего первого представления набора!
При следовании
PersonModelпример в этом учебном руководстве, Ваш заключительный экран мог выглядеть примерно так:
Для получения дополнительной информации о соответствии KVO посмотрите, что Значение ключа Наблюдает Руководство по программированию.
Что является следующим?
Это учебное руководство по быстрому запуску не затрагивает всю холодную и мощную функциональность NSCollectionView класс. Существуют такие функции как слияние представлений изображения, установка объектов как можно выбрать или не можно выбрать и изменение цветов, если они выбраны, чередование раскрашивает подпредставления, упорядочивая подпредставления в алфавитном порядке, и многое другое. Теперь, когда у Вас есть рабочая реализация простого представления набора, настраивание Вашего представления и добавление этих опций должны прибыть справедливо быстро. См. более подробные статьи в этом руководстве по программированию для начала работы на некоторых из этих усовершенствованных элементов NSCollectionView класс. Аналогично, некоторые из большего количества расширенных функций представлений набора требуют подробного понимания привязки. Для узнавания больше о привязке посмотрите, что Привязка Какао Программирует Темы.