,我需要爲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