,我需要为NSTableView定制NSCell。这个NSCell子类包含用于处理点击(以及用于文本内容的两个或三个NSTextFieldCell)的自定义NSButtonCell。您会在下面找到我的代码的简化示例。在我的可可应用程序中定制NSCell的NSButtonCell
@implementation TheCustomCell
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
// various NSTextFieldCells
NSTextFieldCell *titleCell = [[NSTextFieldCell alloc] init];
....
// my custom NSButtonCell
MyButtonCell *warningCell = [[MyButtonCell alloc] init];
[warningCell setTarget:self];
[warningCell setAction:@selector(testButton:)];
[warningCell drawWithFrame:buttonRect inView:controlView];
}
我坚持的问题是:是什么让该按钮的最好/正确的方式(更准确地说是NSButtonCell)这里面的NSCell正常工作?“工作”的意思是:触发指定的动作信息,并单击时显示备用图像。开箱即用,单击按钮时不会执行任何操作。
关于此主题的信息很难找到。我在网上发现的唯一帖子指出我实施了
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp;
这是正确的方法吗? 实现trackMouse:在我的包含NSCell?然后将事件转发给NSButtonCell?我希望NSButtonCell能够知道当它被点击时该怎么做(并且我更多地看到了trackMouse:方法可以真正追踪鼠标移动 - 而不是“标准”点击行为的训练轮)。但似乎它不包括在单元格本身... 似乎我还没有掌握定制单元格的大图片,但;;)
我会很高兴如果有人可以用他自己的经验回答这个问题(或者指点我一些教程或类似的东西) - 并告诉我如果我在正确的轨道。
由于提前, 托比
你在哪里告诉表格告诉它的数据源该按钮已被检查? – Richard 2011-12-25 05:49:32
@Jeremy W. Sherman:这可能是一个愚蠢的问题,但你如何得到“button button | buttonRect |”?我尝试了各种各样的东西,如[按钮框],但似乎没有工作... – houbysoft 2012-02-28 04:34:15