我究竟做错了什么?

我有一个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)或带有笔触的rect,它们都可以正常工作,但是它们正在运行禁用IBOutlet操作(单击按钮)。任何帮助,将不胜感激。

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

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

(我已经离开计算机了几个小时,所以不要以为我没有回信是很粗鲁的,只是想在离开之前先解决这个问题。)

最佳答案

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

10-05 19:34