10.11 NSCollectionView:“无法在bundle NSBundle中加载nibName:NSCollectionViewItem”

时间:2015-10-31 15:45:59

标签: macos xcode7 nib cocoa-bindings nscollectionview

我想根据https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/#10_11CollectionView使用来自Swift的新API模型的NSCollectionView。由于我更喜欢​​在IB中尽可能多地做,我想使用内容绑定,并在链接页面上按照绑定内容到NSCollectionView(自WWDC种子以来的新内容)一节。

我已将NSCollectionView从对象库中拉到我的故事板中,然后通过连接检查器删除了另外生成的 prototype segue,并删除了生成的NSCollectionViewItem。然后,我将Collection View的布局设置为 Flow ,并将集合视图连接到我的视图控制器的插座。

接下来,我使用Xcode的视图模板创建了一个单独的.xib文件,并放入了必要的视图。我还引入了“Collection View Item”对象。

然后,我调整了视图控制器的viewDidLoad方法,用集合视图注册nib。

override func viewDidLoad() {
    super.viewDidLoad()

    let nib = NSNib(nibNamed: "Item", bundle: nil)!
    collectionView.registerNib(nib, forItemWithIdentifier: "")
}

最后,我已将我的数组控制器连接到NSCollectionView的内容绑定。

但是,当我尝试启动应用程序时,会抛出异常:

  

[NSNib _initWithNibNamed:bundle:options:]无法在bundle NSBundle中加载nibName:NSCollectionViewItem

仅当我的数组具有实际内容时才会发生异常,因此只有在需要实例化CollectionViewItem时才会发生。

我在这里做错了什么?

此处的示例项目:https://scriptreactor.com/collectionviewtest.zip

1 个答案:

答案 0 :(得分:6)

问题是,在Collection View Item的.xib中, Item对象的视图出口需要链接到根视图。此外,需要在 Item对象的Attributes Inspector中设置Nib Name。