【发布时间】:2011-07-05 06:04:45
【问题描述】:
我做错了什么?
我有一个 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,所以我知道它在那里。
(我离开电脑几个小时了,所以不要认为我不回复是无礼的,只是想在我离开之前把这个问题问出来。)
【问题讨论】:
-
您是否在调用
-awakeFromNib时检查了[NSApp mainWindow]是否非nil?