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
или подкласс в файле), тогда регистрация не требуется.