Как вы инициализируете 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
Другие вопросы по тегам