cocoanscollectionviewnscollectionviewitem

Cocoa - Where is the link between a NSCollectionView and a NSCollectionViewItem? Xcode 6 Bug?


When you drag a NSCollectionView to a view, a NSCollectionViewItem appears on the storyboard, floating around.

Imagine I drag several NScollectionViews to the same view. I will have a bunch of NSCollectionViewItems. How a collection view knows which NScollectionViewItem belongs to it? Is there a connection between the two that can be seen on interface builder? I don't see anything on interface builder? Where to do I see that?

EDIT: Apparently this seems to be a Xcode bug. When you add a NSCollectionView to the storyboard, it comes without a link to the NSCollectionViewItem and it seems to be impossible to connect the itemPrototype outlet between them.

After contacting Apple about bugs like this, their answer was: "this is a know issue with Storyboards on OS X. Use Xibs instead."


Solution

  • Well, I gave @RubberDuck's workaround a go but it didn't work (see my comment). What worked for me is setting collectionView.itemPrototype in viewDidLoad of the view controller (Xcode 6.1):

    @IBOutlet weak var collectionView: NSCollectionView!
    
    override func viewDidLoad() {
        // don't forget to set identifier of CollectionViewItem 
        // from interface builder
        let itemPrototype = self.storyboard?.instantiateControllerWithIdentifier("collectionViewItem")
            as NSCollectionViewItem
        self.collectionView.itemPrototype = itemPrototype
    }