Представление инициируется, но drawRect: не вызывается - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть пустое приложение, в котором я пытаюсь нарисовать представление в главном окне программно, то есть, не перетаскивая «Пользовательское представление» из Интерфейсного Разработчика.Судя по некоторым контрольным точкам и некоторым установленным мной NSLogs (), кажется, что когда я вызываю

RectangleDrawer *rectangle1 = [[RectangleDrawer alloc] initWithFrame:NSMakeRect(10, 10, 50, 50)];
[[[[NSApplication sharedApplication] mainWindow] contentView] addSubView:rectangle1];

, я могу сказать, что мой rectangle1 инициируется, потому что он печатает NSLog, но не отображаетокно.То есть -(void)drawRect:(NSRect)dirtyRect не вызывается, он не печатает NSLog внутри.RectangleView прост, подкласс NSView вызывает NSRectFill([self bounds]) с NSBlueColor.

Когда я перетаскиваю представление в Interface Builder и устанавливаю его класс в RectangleView, он работает отлично ... Рисует синийкоробка, как шарм ...

Ответы [ 2 ]

0 голосов
/ 08 января 2012

Я изменил нижнюю строку, чтобы читать

[_window.contentView addSubview:rectangle1];

и теперь работает отлично ...

0 голосов
/ 26 декабря 2011

Я вижу, как вы добавляете подпредставление, но я не вижу, чтобы вы говорили что-либо перерисовывать.Что произойдет, если вы отправите -setNeedsDisplay:YES в суперпредставление?

...