我遇到的问题似乎是我能够将项目添加到集合视图中,并且拥有我从NSCollectionViewItem的子类创建的原型单元格,但是当我尝试更改标签以显示来自即使我从界面构建器连接它们,因为它们是零,所以会得到错误。
我还通过将一个mouseup函数攻击到单元格来检查representObject属性,并且它工作正常。当我尝试分配显然不存在的出口的stringValue时,它才会崩溃。
在下面,您可以看到我的故事板和项目视图的控制器。
Label对象在下面表示为两个@IBOutlets
。
representedObject
被别名为var morpheme : Morpheme?
在主窗口控制器中,我正在测试只是将Morpheme
对象添加到集合中,其中包含我想要填充标签的测试值。
显示屏显示列表中的单元格,但是当我单击它们时,由于来自显然未实例化的插座的nil
值,它会崩溃。如果您在控制台中查看Morpheme 3
已成功打印,那么数据模型就会显示出来。还有什么我需要做的吗?有很多关于使用绑定菜单的东西,但我没有玩过很多东西。
答案 0 :(得分:1)
这是一个非常有趣的问题,已经获得了很多牵引力。问题似乎是Cocoa中的一个错误,所以当从原型创建的项目时,它们的出口不会被钩住。
看看创建原型时会发生什么:
然后,当创建实际实例时,出口是零:
所以我的建议是使用两种解决方案之一:
或者只是看一下关键字的例子:“makeItemWithIdentifier”
这是我在控制器中的代码:
class ViewController: NSViewController {
dynamic var collectionViewData = [String]()
@IBOutlet weak var collectionView: NSCollectionView!
override func viewDidLoad() {
super.viewDidLoad()
guard let proto = self.storyboard?.instantiateControllerWithIdentifier("collectionViewItem") as? CustomCollectionViewItem else { return }
collectionView.itemPrototype = proto
collectionViewData.append("One")
collectionViewData.append("Two")
}
我的最后一张照片是(你可以看到我将标签绑定到数组中的actaul字符串):