gpt4 book ai didi

objective-c - 如何处理来自 NSCollectionView 的按钮点击

转载 作者:太空狗 更新时间:2023-10-30 03:44:32 24 4
gpt4 key购买 nike

我有一个 NSCollectionView (OS X,不是 iOS) 绑定(bind)到我的模型。每个 Collection View 项都有一个按钮和一个标签。我正在处理点击操作,我有 senderevent 参数,但我无法将一个按钮与其他按钮区分开来。大多数其他不涉及 Collection View 的问题都说要使用 tag 属性,但这不会在 Interface Builder 的绑定(bind)选项卡上公开。有一个 ArgumentArgument2 绑定(bind),但它们似乎不对应于 objc 代码中的 tag 属性,我不知道如何以其他方式访问这些参数。

-(void)image_click:(id)sender forEvent:(NSEvent *)event
{
NSButton *btn = sender;
NSLog(@"image clicked, %ld", (long)btn.tag); //image clicked, 0
}

如何在 Collection View 中一堆按钮的点击操作中区分 Objective-C 代码中的按钮?

最佳答案

我假设您想确定 View 中按钮所表示的模型对象。我能够通过遍历 Collection View 中的按钮来确定模型对象。我无法使用选择索引或任何其他类似属性,但最终可以确定模型。

假设您的 NSArrayController 已经有了您的数组,然后执行以下操作:

绑定(bind):

Collection View 只需要一个绑定(bind)

Bind to:         <NSArrayController instance>
Controller Key: arrangedObjects
Model Key Path: <blank>

Controller :

您应该将 Controller 连接到内容 View

property (weak) IBOutlet NSCollectionView *collectionView;

最后,接收到按钮点击消息的 Controller 应该实现这个 IBAction:

- (IBAction) collectionViewClick:(id)sender
{
id objectInClickedView = nil;

for( int i = 0; i < [[self.collectionView content] count]; i++ ) {
NSCollectionViewItem *viewItem = [self.collectionView itemAtIndex:i];

if( [sender isDescendantOf:[viewItem view]] ) {
objectInClickedView = [[self.collectionView content] objectAtIndex:i];
}
}
}

这会将对象分配给 objectInClickedView。如果你真的对view或viewItem感兴趣,你可以修改代码。

关于objective-c - 如何处理来自 NSCollectionView 的按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17326420/

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