Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 绑定到NSCollectionViewItem崩溃Xcode_Cocoa_Macos_Nscollectionview_Nscollectionviewitem - Fatal编程技术网

Cocoa 绑定到NSCollectionViewItem崩溃Xcode

Cocoa 绑定到NSCollectionViewItem崩溃Xcode,cocoa,macos,nscollectionview,nscollectionviewitem,Cocoa,Macos,Nscollectionview,Nscollectionviewitem,使用XCode 4.1,每当我尝试使用CollectionView时,都会遇到崩溃 以下是我正在做的步骤: 从新项目中,编辑MainMenu.nib文件 将NSCollectionView添加到窗口,这也会添加集合视图 项目,以及新视图中的新视图 添加一个类似NSTextField的控件 选择控件,并将检查器切换到绑定窗格 尝试将某些内容绑定到集合视图项。 在下拉菜单中选择集合视图项目后,将显示 “内部错误”对话框出现。尝试从此对话框继续将导致 绑定窗格将消失,直到重新启动XCode 这是发生在

使用XCode 4.1,每当我尝试使用CollectionView时,都会遇到崩溃

以下是我正在做的步骤:

  • 从新项目中,编辑MainMenu.nib文件
  • 将NSCollectionView添加到窗口,这也会添加集合视图 项目,以及新视图中的新视图
  • 添加一个类似NSTextField的控件
  • 选择控件,并将检查器切换到绑定窗格
  • 尝试将某些内容绑定到集合视图项。 在下拉菜单中选择集合视图项目后,将显示 “内部错误”对话框出现。尝试从此对话框继续将导致 绑定窗格将消失,直到重新启动XCode
  • 这是发生在其他人身上还是我遇到的事? 是否有一种方法可以解决这个问题,允许我在XCode或代码中绑定到集合视图项(我最终希望绑定到representedObject值)


    我试图创建一个自定义的NSCollectionViewItem子类,该子类使用一个单独的nib文件,并将其设置为NSCollectionView的itemPrototype,但当时情况非常糟糕。

    是的,我也可以确认这个错误,即使在Interface Builder 3上也是如此

    唯一的解决方法是以编程方式进行绑定:

    [textField bind:@"value" toObject:collectionViewItem withKeyPath:@"representedObject.foo" options:nil];
    

    我发现,将集合视图项视图拆分为自己的XIB,然后重新连接,以便集合视图项原型加载新的XIB,这样您就可以在interface builder中创建绑定,而不会崩溃。我遵循这些步骤

  • 从默认xib中删除集合视图项视图
  • 创建新视图,并从NSCollectionViewItem继承XIB
  • 在新视图中创建集合视图项
  • 将字段绑定到新视图的文件所有者
  • 回到集合视图xib,更新集合视图项的属性以加载新xib的bin名称

  • 我不确定它是否比编程更快,但它确实允许您在不编写代码的情况下管理绑定。我现在有一些应用程序是这样工作的。

    我找到了一个临时工作:

    选择“集合视图项”并在“属性检查器”下→ “查看控制器”设置,将“Nib名称”设置为“主菜单”


    完成此操作后,它不会崩溃,您可以设置绑定。在构建应用程序时,请务必清除“Nib名称”设置。

    您能提供一些示例代码吗?我不明白:(我在这里写了一个完整的例子:@Iain,写得好!这正是我所做的,希望它能帮助GarethPrice。这很漂亮,@Iain。非常感谢你。