1

我目前正在使用Swift開發OS X應用程序。我在我的主視圖中嘗試使用NSCollectionView,因此我已將NSCollectionView對象添加到我的.xib文件中。除了將數據源和委託鏈接到文件所有者之外,我沒有改變任何事情。使用NSCollectionView時聲明失敗

這是我寫來實現NSCollectionViewDataSource協議代碼:

/// MARK: - NSCollectionViewDataSource 
extension MainViewController: NSCollectionViewDataSource { 
    func collectionView(collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int { 
    return 10 
    } 

    func collectionView(collectionView: NSCollectionView, itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem { 
    let itemView = collectionView.makeItemWithIdentifier("fileItem", forIndexPath: indexPath) 
    itemView.textField!.stringValue = "TEST" 

    return itemView 
    } 

} 

現在,當我運行我的代碼,我得到一個未捕獲的異常,並且應用程序崩潰,我不知道爲什麼。這裏是我認爲是有用的堆棧跟蹤的一部分:

2016-04-02 18:58:02.768 Pilot[5442:679789] *** Assertion failure in -[NSCollectionView setItemPrototype:], /Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1404.46/Binding.subproj/NSCollectionView.m:1286 
2016-04-02 18:58:02.971 Pilot[5442:679789] An uncaught exception was raised 
2016-04-02 18:58:02.971 Pilot[5442:679789] Use -registerNib:forItemWithIdentifier: and -registerClass:forItemWithIdentifier: with new CollectionViews 

任何幫助將不勝感激。

+1

你註冊「fileItem」與registerNib或registerClass?或者以其他方式創建/將它連接到.xib文件中? – PRB

+0

@PRB我沒有在任何地方註冊「fileItem」。這可能是問題所在。我不完全確定這個參數的含義以及我應該如何註冊。 – Rohan

+1

如果您使用故事板來設計佈局,則集合視圖中應該有一個Collection View Cell。轉到屬性檢查器(在右側,故事板的Utilities視圖),併爲單元格指定標識符「fileItem」(在Collection Reusable View下) – PRB

回答

0

您必須先註冊自定義視圖這樣的:

collectionView.register(MyFileCollectionViewItem.self, forItemWithIdentifier: "fileItem") 

加載任何物品進入收藏視圖之前(我建議在同一塊它的創建,或在其控制的viewDidLoad())。