1

再生/一時停止ボタンを含むカスタム ビューを作成しようとしています。これらをいくつでも NSWindow にアタッチします。まず、独自の NSView を作成し、さまざまな部分を描画してから、再生/一時停止ボタンを NSView としてサブクラス化しました (ベイビー ステップ)。

ボタンが NSView ではなく NSButtonCell を拡張する必要があると判断するまで、これはすべてうまくいきました。以下 (TimeSlipView.m から) は惨めに失敗し、その理由がわかりません。

playPauseButton = [[TimeSlipViewButton alloc] init];
[playPauseButton setButtonType:NSMomentaryPushInButton];
[self addSubview:playPauseButton];

コンパイル エラーが発生し、最後の行に次の警告が表示されます。

非常に基本的なことを誤解しているように感じます。何らかの理由addSubview:で、NSView 内から NSButtonCell を渡すことはできません。

TimeSlipView.h

#import <Cocoa/Cocoa.h>
#import "TimeSlipViewButton.h"

@interface TimeSlipView : NSView {
    TimeSlipViewButton *playPauseButton;
    NSView *timerText;
    NSView *clientText;
    NSView *projectText;
    NSView *taskText;
}

@end

TimeSlipViewButton.h

#import <Cocoa/Cocoa.h>

@interface TimeSlipViewButton : NSButtonCell

@end
4

1 に答える 1

1

セルはビューではないため、そのように使用することはできません! サブビューとして追加するときに、まさにそれを試してください

セルは、ビューが高すぎる (従来の) 概念です。

実際の描画を処理するために、一部のコントロール (NSButton など) によって使用されていました。


ボタンにはボタンセルが含まれています。ボタンセル
ではありません。NSView です。


あなたがしたいことは、ストック NSButton にカスタム描画オプションを持つ特定の ButtonCell を与えることです。既存の NSButtons/NSSegmentedCells/NSTextFields カスタム NSCells については、優れたチュートリアルがあります。

于 2013-02-24T17:33:11.607 に答える