カスタムNSCellサブクラスIconCellを含むNSTableViewがあります。NSButtonはカスタムNSCell内に描画されますが、実際にクリック可能ではありません。
IconCellには、イメージ、テキスト、ボタンという3つの要素があります。
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSPoint cellPoint = cellFrame.origin;
[controlView lockFocus];
CGFloat buttonWidth = [closeButton frame].size.width;
[someNSImage drawInRect:NSMakeRect(cellPoint.x, cellPoint.y, ICON_WIDTH, ICON_HEIGHT) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0 respectFlipped:YES hints:nil];
[someNSString drawInRect:NSMakeRect(cellPoint.x+ICON_WIDTH+PADDING, cellPoint.y, cellFrame.size.width - ICON_WIDTH - buttonWidth, cellFrame.size.height) withAttributes:someTextAttributes];
[(NSButtonCell*)[closeButton cell] drawWithFrame:NSMakeRect(cellPoint.x + cellFrame.size.width - buttonWidth, cellPoint.y, buttonWidth, cellFrame.size.height) inView:controlView];
[controlView unlockFocus];
}
描画部分が正常に動作し、次のようなものを生成します:何がある
ここに私の描画コードの簡易版(closeButton
がボタンである)ですが欲しいです。
また、ユーザーがセルとやりとりしたときに2つのことが起こりたいとします。ユーザーがセルのどこかをクリックすると閉じるボタンを除いて、actionA
を実行する必要があります。ユーザーが閉じるボタンをクリックすると、actionB
になります。
閉じるボタンが「見えない」ように見えます。クリックすると動きません(作業中のボタンは押し下げられた状態を表示するはずです)。一般に、それは動作しますあたかもそこになかったかのように、actionB
の代わりにactionA
がトリガーされます。私は間違って何をやっている
[tableView setAction:@selector(actionA)];
と
[closeButton setAction:@selector(actionB)];
:
これは、私は2つのアクションを設定する方法ですか?
これは、私が想像するよりはるかに複雑であることが分かりました。残念ながら私は10.6で何人かの人々をサポートしなければならないので、私は最初の解決策をとらなければならないと思う。ありがとう! – houbysoft