後で再利用できる便利なメソッドの配列を組み込んだ、という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:
が呼び出されます。私は何が欠けていますか?