我有一个 NSCollectionView,视图是一个带有标签和 NSButton 的 NSBox。我想要双击或单击 NSButton 来告诉控制器使用 NSCollectionViewItem 的表示对象执行操作。Item View 已经被子类化,代码如下:
#import <Cocoa/Cocoa.h>
#import "WizardItem.h"
@interface WizardItemView : NSBox {
id delegate;
IBOutlet NSCollectionViewItem * viewItem;
WizardItem * wizardItem;
}
@property(readwrite,retain) WizardItem * wizardItem;
@property(readwrite,retain) id delegate;
-(IBAction)start:(id)sender;
@end
#import "WizardItemView.h"
@implementation WizardItemView
@synthesize wizardItem, delegate;
-(void)awakeFromNib {
[self bind:@"wizardItem" toObject:viewItem withKeyPath:@"representedObject" options:nil];
}
-(void)mouseDown:(NSEvent *)event {
[super mouseDown:event];
if([event clickCount] > 1) {
[delegate performAction:[wizardItem action]];
}
}
-(IBAction)start:(id)sender {
[delegate performAction:[wizardItem action]];
}
@end
我遇到的问题是,作为一个 IBAction,-start 范围内的唯一东西是已经在 IB 中绑定的东西,所以委托和 viewItem。这意味着我无法获取表示的对象以将其发送给委托人。
有没有办法绕过这个有限的范围或更好的方法或获取表示的对象?
谢谢。