NSCollectionView似乎不需要注册其项类

问题描述 投票:1回答:1

当我制作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)似乎工作得很好。

现在我想知道注册类是否必要或可以删除​​。

谢谢。

macos cocoa appkit nscollectionview nscollectionviewitem
1个回答
1
投票

Apple有一个名为CocoaSlideCollection的示例应用程序,它演示了现代(即10.11+)NSCollectionView的使用。在collectionView:itemForRepresentedObjectAtIndexPath:文件中的AAPLBrowserWindowController.m方法中,有这样的评论:

回到collectionView的消息,要求它创建一个与给定项indexPath相关联的@“Slide”项。 collectionView将首先检查NSNib或项类是否已使用该名称注册(通过-registerNib:forItemWithIdentifier:或-registerClass:forItemWithIdentifier :)。如果失败,collectionView将搜索名为“Slide”的.nib文件。由于我们的.nib文件名为“Slide.nib”,因此无需注册。

虽然我没有在文档中明确提到这一点,但这表明只要.xib名称与标识符匹配(并且文件中只有一个NSCollectionViewItem或子类),就不需要注册。

© www.soinside.com 2019 - 2024. All rights reserved.