Objective c NSButton绑定到NSCollectionViewItem:representedObject?
在NSCollectionViewItem视图中预先添加按钮时,我可以在inspector中绑定其操作: 这是毫无问题的 现在,我想在视图的Objective c NSButton绑定到NSCollectionViewItem:representedObject?,objective-c,swift,binding,nsbutton,nscollectionviewitem,Objective C,Swift,Binding,Nsbutton,Nscollectionviewitem,在NSCollectionViewItem视图中预先添加按钮时,我可以在inspector中绑定其操作: 这是毫无问题的 现在,我想在视图的mouseDown:中以编程方式创建该按钮,我应该为bind:选项分配什么,以获得与inspector中的“bind to:Collection视图项”相同的结果 这是密码:(Swift) aButton!。束缚( “论点”, toObject:???,//您应该绑定到NSCollectionViewItem实例,该实例拥有该按钮作为其后代的视图 您是从什
mouseDown:
中以编程方式创建该按钮,我应该为bind:
选项分配什么,以获得与inspector中的“bind to:Collection视图项”相同的结果
这是密码:(Swift)
aButton!。束缚(
“论点”,
toObject:???,//您应该绑定到NSCollectionViewItem
实例,该实例拥有该按钮作为其后代的视图
您是从什么上下文创建按钮并尝试绑定它的?这是在集合视图的控制器中?还是在集合视图项本身(集合视图项视图的控制器)中?或者可能是在自定义视图类中,尽管这有点奇怪
从集合视图的控制器中,可以使用-itemAtIndex:
获取相关集合视图项
在collection视图项中,您只需使用self
。但是,在这种情况下,绑定并不能给您带来太多好处。您最好只设置按钮的目标
和操作
,并对操作方法中的representedObject
执行一些操作
如果您是从视图执行此操作,则需要一种方法来获取对集合视图项的引用。您应该在连接到NIB中集合视图项的视图上添加一个弱出口。然后,您可以使用该出口获取该bind()的集合视图项
call.这是一个自定义视图类,用作NSCollectionViewItem
的原型。我的意思是只在鼠标位于特定位置时创建按钮。因此itemAtIndex:
将不起作用。正如我所读到的,当新的NSCollectionViewItem
被删除时,将不会复制到原型的预链接IBOutlet正在创建。这就是我最终将NSCollectionView
子类化的原因。由于NSCollectionViewItem
继承自NSViewController
,它可以从NIB加载其视图。因此,您可以创建原型项(而不是视图)在具有集合视图的NIB中,只需在属性检查器上为其分配一个NIB名称。然后,您可以在单独的视图NIB中定义项视图。将该NIB文件的所有者的类设置为NSCollectionViewItem
(如果使用自定义子类,则设置自定义子类)。然后,您可以设置一个插座和任何其他类型的连接,当每个实际项目和项目视图被实例化时,它们将被忠实地重新创建。我将接受这一点,作为您为此所付出的所有努力的答案。谢谢。
aButton!.bind(
"argument",
toObject: ???, // <- what should I set here?
withKeyPath: "representedObject",
options: options
)