1

设置

我有一个NSCollectionView. 我在View Prototype. 我已经成功地设置了绑定,所以Card Titleaction得到了填充。(下图1)

目标

当我单击复选框时,我想运行一个函数来访问已经能够访问的特定CardModel内容。View Prototype然后我会相应地操作它的数据。

研究

我在 SO 上找到了这篇文章:获取 NSCollectionViewItem NSButton click 的代表对象值,它很好地描述了我的情况。不幸的是,答案是没有特定的代码。以下是建议:

因此,首先,将按钮单元格的表示对象设置为拥有该按钮的集合视图项。(您可以在 nib 编辑器中执行此操作。)然后,在您的操作方法中,获取按钮的单元格,然后是单元格的表示对象(即项目),然后是项目的表示对象。

看起来很简单,对吧?

尝试的解决方案

我创建了一个方法cardCheckBoxClicked:并将其连接到复选框。

根据上面的建议,我将button cell的插座连接representedObjectCard Collection View Item. (图2)

然后我尝试在代码中获取Card Collection View Item's 。representedObject

来自MainWindowController.h

-(IBAction)cardCheckBoxClicked:(id)sender
{
    CardModel* cModel = [[sender representedObject] representedObject];

    NSLog(@"card title: %@",cModel.title);
}

错误

当我单击复选框时,我收到以下错误:

-[NSButton representedObject]: unrecognized selector sent to instance 0x6080001581b0

问题!

那么 -我如何访问button cell's 表示的对象?我误解了上面给出的建议吗?如何成功访问我需要的数据?

图片(参考)

绑定示例 在此处输入图像描述

表示对象连接 在此处输入图像描述

4

2 回答 2

4

这里:

-[NSButton representedObject]:

您是否要求 NSButton 类运行方法表示对象。确保区分 Class 和该类的对象或实例。

您需要获取实际的按钮,获取其按钮单元格(至少我认为这是您想要的),然后在单元格上调用代表对象。如果我理解正确的话。我从不接触界面生成器,所以这里的代码完全符合您的要求。

someObject = [[theButton cell] representedObject];
于 2014-07-02T21:59:24.697 回答
0

除了 CH Buckingham 的回答之外,您还应该考虑使用绑定。您可以使用模型键路径将复选框的值绑定绑定到集合视图项,该路径通过representedObject您的CardModel. (如果需要,键路径可以继续通过您的模型对象图。)这将在按钮被切换时设置该属性。

于 2014-07-03T00:23:40.793 回答