gpt4 book ai didi

objective-c - 获取 NSCollectionView 项目 View 操作中表示的对象

转载 作者:行者123 更新时间:2023-12-03 17:50:48 25 4
gpt4 key购买 nike

这是我所拥有的:

  • 一个NSCollectionView
  • 通过 NSArrayController 填充
  • 每个“项目”(NSCollectionViewItem) 在附加 View 中显示其内容
  • 此 View 包含一个 NSButton

现在,问题是:

当用户单击按钮时,我如何知道哪个是代表的对象? (附加到按钮所属特定 View 的项目)

P.S.我显然可以做类似的事情:

NSInteger itemIndex = [[_collectionView subviews] indexOfObject:[sender superview]];
MyItem item = _items[itemIndex];

但它看起来一点也不好看 - 尽管它确实有效。

想法?

最佳答案

您没有说明按钮操作的目标是什么对象。您可以通过多种方式做到这一点。

例如,您可以使用 NSCollectionViewItem 的自定义子类。您可以将按钮的操作定位到 Collection View 项。然后, Collection View 项将直接查阅其自己的representedObject属性。如果有必要,它可以使用必要的信息调用另一个对象(例如窗口 Controller )。或者,如果合适的话,只需调用所表示的对象上的方法。

类似地,您可以使用自定义 View 类作为 Collection View 项的 View 。该 View 类可以有一个连接到其 Collection View 项的 socket 。该按钮将定位到该 View 类上的操作方法,该方法将从其导出获取 Collection View 项,然后从 Collection View 项获取representedObject

另一种方法是使用按钮绑定(bind)。您可以绑定(bind)其目标(包括指定选择器),还可以绑定(bind)要传递给选择器的参数。您可以使用模型键路径 representedObject 将目标绑定(bind)到 Collection View 项( Collection View 项 View NIB 中的文件所有者)。然后,按钮直接针对所表示的对象。

或者,您可以将按钮的目标绑定(bind)到其他内容,并将参数绑定(bind)到 Collection View 项、模型键路径representedObject。因此,按钮将调用对象上的方法,并将所表示的对象作为参数传递给该方法。

关于objective-c - 获取 NSCollectionView 项目 View 操作中表示的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27655526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com