正在启动视图,但未调用drawRect:

时间:2011-12-26 07:22:46

标签: objective-c macos views drawrect

我所拥有的是一个空白的应用程序,其中我尝试以编程方式在主窗口上绘制视图,也就是说没有先从Interface Builder中拖动“自定义视图”。从一些断点和一些NSLogs()判断我设置,似乎当我打电话

RectangleDrawer *rectangle1 = [[RectangleDrawer alloc] initWithFrame:NSMakeRect(10, 10, 50, 50)];
[[[[NSApplication sharedApplication] mainWindow] contentView] addSubView:rectangle1];

我可以告诉我我的rectangle1正在启动,因为它打印了一个NSLog但它没有在窗口上绘制视图。也就是说-(void)drawRect:(NSRect)dirtyRect没有被调用,它不会打印出NSLog。 RectangleView很简单,是NSView的子类,它使用NSRectFill([self bounds])调用NSBlueColor

当我将视图拖到Interface Builder并将其类设置为RectangleView时,它完美地工作...绘制一个像魅力一样的蓝色框...

2 个答案:

答案 0 :(得分:0)

我看到你添加了子视图,但是我没有看到你要重绘任何内容。如果您将-setNeedsDisplay:YES发送到超级视图会怎样?

答案 1 :(得分:0)

我将底线改为

[_window.contentView addSubview:rectangle1];

现在它完美无缺......