我做错了什么?
我有一个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中,所以我知道它就在那里。
(我离开电脑好几个小时,所以不要以为我没有回复是不礼貌的,只是想在我离开之前把这个问题拿到那里。)
答案 0 :(得分:0)
只需使用NSRectFill(rect);而不是NSRectFillUsingOperation(rect,NSCompositeSourceOver);
答案 1 :(得分:0)
您是否在Interface Builder中将视图的类设置为GameMap类而不是NSView?当你这样做时,应该自动调用GameMap的drawRect()。