【发布时间】:2011-11-23 09:18:47
【问题描述】:
我有一个带有自定义单元格视图的基于视图的表格。在这个自定义单元格视图中,我有一个自定义 NSButton,它的作用类似于复选框(它可以打开和关闭自定义图像)。这部分效果很好。图像完美地打开和关闭。
我想要做的是将行中的自定义按钮与表中的实际行相关联。当我检查/单击按钮时,它将突出显示相应的行,然后对复选框/按钮所在的行执行操作。例如,单击 NSButton 时从表中删除行。
我的自定义 NSButton 实现如下:
头文件:
#import <Foundation/Foundation.h>
@interface CustomCheckButton : NSButton {
BOOL _checked;
}
@property (nonatomic, setter=setChecked:) BOOL checked;
-(void) setChecked:(BOOL) check;
@end
实施:
#import "CustomCheckButton.h"
@implementation CustomCheckButton
@synthesize checked = _checked;
-(id) init
{
if( self=[super init] )
{
self.checked = NO;
[self setTarget:self];
[self setAction:@selector(onCheck:)];
}
return self;
}
-(void) awakeFromNib
{
self.checked = NO;
[self setTarget:self];
[self setAction:@selector(onCheck:)];
}
-(void) setChecked:(BOOL) check
{
_checked = check;
if( _checked )
{
NSImage* img = [NSImage imageNamed:@"check_on.png"];
[self setImage:img];
[self setState:NSOnState];
}
else
{
NSImage* img = [NSImage imageNamed:@"check_off.png"];
[self setImage:img];
[self setState:NSOffState];
}
}
-(void) onCheck:(id) sender
{
self.checked = !_checked;
NSLog(@"A check box was pressed");
}
@end
当前的解决方案根本不将按钮与行关联。例如,当我对行进行排序时,即使选择了不同的行,所选图像也不会链接到该行,并且经常停留在表格中的同一位置。
对此的任何帮助将不胜感激。
【问题讨论】:
标签: objective-c cocoa