NSCollectionView没有显示任何内容

时间:2015-06-07 01:31:45

标签: cocoa cocoa-bindings nscollectionview kvc nscollectionviewitem

我试图遵循本指南:

Quick Start for Collection Views

在集合视图项中使用NSImageView。

没有任何东西出现,如果我用图像设置图像也没有,如果我通过代码设置数组也没有。

所以我尝试使用

以编程方式进行
func representedObject(representedObject: AnyObject)
{
    super.representedObject = representedObject
    photoImageView.image = (representedObject as! NSImage)
    println("\(representedObject)")
}
收集视图项(子类)中的

如果我没有子类Collection View Item Xcode告诉我没有原型设置,如果我将其子类化,它告诉“无法加载nibName”......(它在故事板中设置了正确的标识)< / p>

我不能让这个Collection View工作: - (

无论如何,我喜欢绑定...所以我想通过绑定来实现正确的结果.. 我检查并重新检查了链接中文档中的每个段落,一切似乎都很好。主要区别在于文档使用了app委托,我正在使用视图控制器。

我快速翻译了KVC方法,我认为它们是正确的,因为我知道它们已被调用。他们在这里:

func insertObject(p: ClientPhoto, inClientPhotoArrayAtIndex index: Int) {
    images.insertObject(p, atIndex: index)
}

func removeObjectFromClientPhotoArrayAtIndex(index: Int) {
    images.removeObjectAtIndex(index)
}

func setClientPhotoArray(a: NSMutableArray) {
    images = a
}

func clientPhotoArray() -> NSArray {
    return images
}

1 个答案:

答案 0 :(得分:1)

它们基本上是两种使用NSCollectionView的方法。 1是设置itemPrototype属性,另一个是覆盖newItemForRepresentedObject。覆盖方法更灵活,并且具有以下优势:您可以在故事板中创建nscollectionviewitem,并且所有插座都将正确设置。以下是我如何使用它的示例:

class TagsCollectionView: NSCollectionView {
// ...
override func newItemForRepresentedObject(object: AnyObject!) -> NSCollectionViewItem! {
    let viewItem = MainStoryboard.instantiateControllerWithIdentifier("tagCollectionViewItem") as! TagCollectionViewItem
    viewItem.representedObject = object

    return viewItem
}