NSCollectionView не нужно регистрировать свой класс элементов

Когда я сделал NSCollectionView UI...

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

self.cv.register(NSNib.init(nibNamed: "ContentItemOneClass", bundle: nil), forItemWithIdentifier: "ContentItemOneClass")

и я добавил больше просмотров коллекции и забыть позвонить, как

self.cv.register(NSNib.init(nibNamed: "ContentItemTwoClass", bundle: nil), forItemWithIdentifier: "ContentItemTwoClass")

но из collectionView(_:itemForRepresentedObjectAt:), makeItem(withIdentifier:"ContentItemTwoClass", for: indexPath) Кажется, работает просто отлично.

так что теперь я брожу, если регистр класса необходим или может быть удален.

Благодарю.

0 ответов

У Apple есть пример приложения под названием CocoaSlideCollection что демонстрирует использование современного (т.е. 10.11+) NSCollectionView, в collectionView:itemForRepresentedObjectAtIndexPath: метод в файле AAPLBrowserWindowController.m Вот этот комментарий:

Отправьте сообщение в collectionView, попросив его создать элемент @"Slide", связанный с данным элементом indexPath. CollectionView сначала проверит, зарегистрирован ли NSNib или элемент Class с этим именем (через -registerNib:forItemWithIdentifier: или -registerClass:forItemWithIdentifier:). В противном случае collectionView будет искать файл.nib с именем "Slide". Поскольку наш файл.nib называется "Slide.nib", регистрация не требуется.

Хотя я не видел этого явно упомянутым в документации, это предполагает, что до тех пор, пока .xib имя соответствует идентификатору (и имеет один и только один NSCollectionViewItem или подкласс в файле), тогда регистрация не требуется.

Другие вопросы по тегам