Я чувствую, что это простая задача, но, похоже, я не могу заставить ее работать.
Я пытаюсь иметь NSCollectionView с пользовательскими элементами. Я добавил еще один NSImageView в настраиваемое представление элемента и подклассифицировал это представление, чтобы добавить настраиваемый выход, подключенный к этому дополнительному NSImageView.
Теперь я переопределяю - (NSCollectionViewItem *)newItemForRepresentedObject:(id)object
, потому что иногда мне нужно удалить этот NSImageView.
- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {
CustomItem *theItem = (CustomItem *)[super newItemForRepresentedObject: object];
...
if (I need to remove that NSImageView) {
[[theItem additionalImageView] removeFromSuperview];
}
return theItem;
}
Так или иначе, дополнительныйImageView выглядит как (nil)
. Это в какой-то мере очевидно, потому что метод super будет возвращать NSCollectionViewItem по умолчанию, который не имеет пользовательского выхода.
Что лучше всего сделать прямо здесь? Я прочитал кое-что о методе copy
и попробовал:
- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {
CustomItem *theItem = [(CustomItem *)[super itemPrototype] copy]; // Here is the change
...
if (I need to remove that NSImageView) {
[[theItem additionalImageView] removeFromSuperview];
}
return theItem;
}
Но это не сработает. Итак, есть ли способ сохранить пользовательские выходы при использовании пользовательского NSCollectionViewItem?
Любая помощь будет принята с благодарностью. Спасибо!