Cocoa NSView没有填充颜色

时间:2011-02-27 14:03:27

标签: cocoa nsview

我做错了什么?

我有一个awakeFromNib方法,我在其中调用一个子视图(GameMap)。该类存在,我能够登录awakeFromNib方法以及登录GameMap的initWithFrame方法,但我无法在窗口中绘制GameMap。这是我的AppController.m文件的awakeFromNib方法:

- (void)awakeFromNib {

    //make new game map
    GameMap* newMap = [[GameMap alloc] initWithFrame:NSMakeRect(0.0, 0.0, 1000.0, 500.0)];

    [[[NSApp mainWindow] contentView]addSubview:newMap];

    [newMap release];
}

在GameMap.m中这里是drawRect方法

- (void)drawRect:(NSRect)rect {

    [[NSColor whiteColor] set];
    NSRectFillUsingOperation(rect, NSCompositeSourceOver);

}

在同一个应用程序中我从AppController调用另外两个类,NSView,MakeCircle和MakeRoom的所有子视图放置一个圆圈(duh,:D)或窗口中有笔划的矩形,它们工作正常但是它们正在运行IBOutlet操作(按钮点击)。任何帮助,将不胜感激。

*注意:我有NSRectFillUsingOperation(rect,NSCompositeSourceOver),但这也与NSRectFill(rect)失败。

**我也可以从initWithFrame将传递的rect的origin.x / size.width等记录到GameMap中,所以我知道它就在那里。

(我离开电脑好几个小时,所以不要以为我没有回复是不礼貌的,只是想在我离开之前把这个问题拿到那里。)

2 个答案:

答案 0 :(得分:0)

只需使用NSRectFill(rect);而不是NSRectFillUsingOperation(rect,NSCompositeSourceOver);

答案 1 :(得分:0)

您是否在Interface Builder中将视图的类设置为GameMap类而不是NSView?当你这样做时,应该自动调用GameMap的drawRect()。