首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBOutlets in NSCollectionViewItem为零

IBOutlets in NSCollectionViewItem为零
EN

Stack Overflow用户
提问于 2016-06-28 07:17:04
回答 1查看 746关注 0票数 1

我遇到了一个问题,似乎我可以将项添加到集合视图中,并拥有我从NSCollectionViewItem子类创建的原型单元格,但是当我试图更改标签以显示来自is get错误的数据时,因为它们是零的,即使我从接口生成器连接了它们。

我还通过向单元格攻击mouseup函数来打印representedObject属性,它运行良好。只有当我试图分配给显然不存在的网点的stringValue时,它才会崩溃。

在下面,您可以看到我的故事板和项目视图的控制器。Label对象在下面表示为两个@IBOutletsrepresentedObject被别名为var morpheme : Morpheme?

在主窗口控制器中,我正在测试如何将Morpheme对象添加到集合中,并使用我想要填充标签的测试值。

显示显示的是列表中的单元格,但当我单击它们时,它会崩溃,原因是来自未实例化的出口的nil值。如果您查看控制台,Morpheme 3已成功打印,因此数据模型将其输入。还有什么我需要做的吗?有很多关于使用绑定菜单的东西,但是我并没有经常使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-28 15:12:04

这是一个非常有趣的问题,它已经获得了很大的吸引力。问题似乎是可可的一个缺陷,所以当项目创建的原型,他们的插座不上钩。

看看在创建原型时会发生什么:

然后,当创建实际实例时,出口为零:

因此,我的建议是使用以下两种解决方案之一:

  1. 使用nibs和NSCollectionViewDataSource创建基于视图的集合视图项。在这里寻找最后一个答案:Cocoa - Where is the link between a NSCollectionView and a NSCollectionViewItem? Xcode 6 Bug?

或者只需查看带有关键字的示例:"makeItemWithIdentifier“

  1. 不要像我在我的例子中那样使用出口和数据绑定。我将文本编辑绑定到表示对象:

下面是我在控制器中的代码:

代码语言:javascript
复制
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字符串):

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38069496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档