後で再利用できる便利なメソッドの配列を組み込んだ、というNSViewサブクラスを作成しました。DAViewこれはうまく機能しますが、 を使用するクラスやクラス自体でdrawRect:は決して呼び出されません。DAViewなんで?
これがどのようDAViewに見えるかです:
DAView
@interface DAView : NSView
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [NSColor clearColor];
// Make layer-backed by default
self.wantsLayer = YES;
// Create a root layer
CALayer *_rootLayer = [CALayer layer];
_rootLayer.shouldRasterize = YES;
_rootLayer.name = DAViewRootLayerDefaultName;
self.layer = _rootLayer;
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect // never called
{
NSLog(@"Draw Rect called");
}
さて、この追加/メソッドを利用したい場合DAView's、同じ問題に直面します。の場合のように呼び出されることのないを除いてdrawRect:、すべて正常に動作します。DAView
DATableView
@interface DATableView : DAView
- (void)drawRect:(NSRect)dirtyRect // never called either
{
[[NSColor grayColor] set];
NSBezierPath *_cellSeparator = [NSBezierPath bezierPath];
[_cellSeparator lineToPoint:dirtyRect.origin];
[_cellSeparator closePath];
[_cellSeparator stroke];
NSLog(@"Draw rect");
}
ただしDATableView、 のヘッダーを のサブクラスに変更するとNSView、drawRect:が呼び出されます。私は何が欠けていますか?