Какао NSView не заливается цветом - PullRequest
1 голос
/ 27 февраля 2011

Что я делаю не так?

У меня есть метод awakeFromNib, в котором я вызываю класс, который является подпредставлением (GameMap).Класс существует, и я могу войти в метод awakeFromNib, а также войти в метод initWithFrame GameMap, но я не могу заставить GameMap рисовать в окне.Вот метод awakeFromNib моего файла AppController.m:

- (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).

** Я также могу записать origin.x / size.width и т. Д.из переданного прямоугольника в GameMap из initWithFrame, так что я знаю, что он там.

(Я нахожусь за компьютером несколько часов, так что не думайте, что я груб, что не отвечаю, просто хотел уточнить этот вопрос перед тем, как уйти.)

Ответы [ 2 ]

0 голосов
/ 17 июня 2014

Вы установили класс представления в класс GameMap вместо NSView) в Интерфейсном Разработчике?Когда вы сделаете это, функция GameRap drawRect () будет вызвана автоматически.

0 голосов
/ 27 февраля 2011

Просто используйте NSRectFill (rect); вместо NSRectFillUsingOperation (rect, NSCompositeSourceOver);

...