代码之家  ›  专栏  ›  技术社区  ›  WoffOVkee

NSCollectionView似乎不需要注册其item类

  •  1
  • WoffOVkee  · 技术社区  · 8 年前

    当我制作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) 看起来很好。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Demitri    6 年前

    苹果有一个名为 CocoaSlideCollection 这证明了现代(即10.11以上)的使用 NSCollectionView . 在 collectionView:itemForRepresentedObjectAtIndexPath: 文件中的方法 AAPLBrowserWindowController.m ,有以下评论:

    消息返回到collectionView,要求它在XPath中创建一个与给定项关联的@“幻灯片”项。collectionView将首先检查NSNib或项类是否已使用该名称注册(通过-registerNib:forItemWithIdentifier:或-registerClass:forItemWithIdentifier:)。否则,collectionView将搜索。名为“Slide”的nib文件。自从我们的。nib文件名为“Slide.nib”,无需注册。

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