Как вы инициализируете NSCollectionViewItem?
Я пытаюсь настроить NSCollectionView, который имеет пользовательский рисунок в отдельных представлениях NSCollectionViewItem. У меня есть изображение, которое мне нужно нарисовать в каждом представлении, но я не могу связать представление обратно с подклассом NSCollectionViewItem в Интерфейсном Разработчике. Есть ли метод init, который я могу использовать с моим NSCollectionViewItem для выполнения операций инициализации? Я пытался реализовать copyWithZone, но я делал что-то не так, потому что получил какой-то вечный цикл. В настоящее время единственная возможность установить мои подключения к представлению - это после изменения выбора с помощью флага -(void)setSelected:(BOOL). Я хочу сделать мой рисунок в виде, но мне нужно изображение из моего представленного объекта в качестве моего источника. Все, что я прочитал, что связано с NSCollectionView, кажется неполным.
@implementation CollectionViewItem
-(void)setSelected:(BOOL)flag {
[super setSelected:flag];
NSLog(@"setSelected: %d", flag);
// tell the view that it has been selected
[(CollectionViewItemView* )[self view] setSelected:flag];
// This is where I pass my image to my view
[(CollectionViewItemView* )[self view] setOriginalSprite:[(MyModel* )self.representedObject imageSource]];
[(CollectionViewItemView* )[self view] setNeedsDisplay:YES];
}
@end
2 ответа
Я нашел эту документацию - класс NSCollectionViewItem
То, что я нашел там, показывает установку ссылки следующим образом:
Setting the Represented Object
– representedObject Available in Mac OS X v10.5 through Mac OS X v10.5
– setRepresentedObject: Available in Mac OS X v10.5 through Mac OS X v10.5
Ваш образец: -(void)setSelected:(BOOL) флаг
Я не знаю языка, но BOOL
идентификатор?
setRepresentedObject:
Устанавливает представляемый объект получателя в указанный объект модели. (Доступно в Mac OS X v10.5 до Mac OS X v10.5.) - (void)setRepresentedObject:(id) объект Параметры
объект
The receiver’s model object.
Доступность
Available in Mac OS X v10.5 through Mac OS X v10.5.
Объявлен в NSCollectionView.h
Примечание: я видел это в документации:
Важное замечание: В Mac OS X v10.5 суперклассом класса NSCollectionViewItem был NSObject. В Mac OS X 10.6 и более поздних версиях NSCollectionViewItem теперь является подклассом NSViewController. Это изменение было сделано для улучшения репликации представления в NSCollectionView. NSCollectionViewItem остается двоично-совместимым с предыдущей реализацией, и разархивирование выполняется правильно.
Итак, если вы привыкли работать с более старым API, возможно, произошли некоторые изменения с тех пор, как вы в последний раз делали это...???
Я не могу связать представление обратно с подклассом NSCollectionViewItem в Интерфейсном Разработчике.
Вы должны привязать элементы в вашем пользовательском представлении к владельцу файла (чей класс должен быть CollectionViewItem
) представленный объект. Например, представление вашего изображения будет привязано к владельцу файла с указанием пути к ключу модели. representedObject.imageSource
,
Есть ли метод init, который я могу использовать с моим NSCollectionViewItem для выполнения операций инициализации?
NSCollectionViewItem
это подкласс NSViewController
, Таким образом, вы можете переопределить -loadView
выполнить пользовательскую инициализацию. Например,
@implementation CollectionViewItem
…
- (void)loadView {
[super loadView];
self.someProperty = someDefaultValue;
}
…
@end