开发者

Cocoa NSView not filling with color

开发者 https://www.devze.com 2023-02-13 13:16 出处:网络
What am I doing wrong? I have an awakeFromNib method in which I am calling a class that is a subview (GameMap). The class exists and I am able to log in the awakeFromNib method as well as log in Gam

What am I doing wrong?

I have an awakeFromNib method in which I am calling a class that is a subview (GameMap). The class exists and I am able to log in the awakeFromNib method as well as log in GameMap's initWithFrame method, but I cannot get GameMap to draw in the window. Here's my AppController.m file's awakeFromNib method:

-(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];
}

and in GameMap.m here's the drawRect method

- (void)drawRect:(NSRect)rect {

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

}

in this same app I am calling two other classes from AppController, all subviews of NSView, MakeCircle and MakeRoom that place either a circle (duh, : D) or a rect with a stroke in the window and they work fine, but they are running off of IBOutlet actions (button clicks). Any help would be appreciated.

*NOTE: I have NSRectFillUsingOperation(rect, NSCompositeSourceOver) but this was also failing wiht NSRectFill(rect).

**I can also log the origin.x/size.width, etc. of the passed rect to GameMap from the initWithFrame, so I know it's there.

(I'm away from my computer for a few hours so don't think I'm being rude for not replying, just wanted to get this question out there before I left.)


Just use NSRectFill(rect); instead of NSRectFillUsingOperation(rect, NSCompositeSourceOver);


Have you set the view's class to the GameMap class instead of NSView) in the Interface Builder? When you do this, the GameMap's drawRect() should get called automatically.

0

精彩评论

暂无评论...
验证码 换一张
取 消