我究竟做错了什么?
我有一个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);