我创建了一个NSView
名为 的子类DAView
,其中包含一组有用的方法以供以后重用。这很好用,但是,drawRect:
从来没有在任何使用 的类中调用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
's 的情况下,它永远不会被调用:
数据表视图
@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:
则会调用。我错过了什么?