Какао: awakeFromNib создает экземпляр класса подвид NSView не работает - PullRequest
0 голосов
/ 02 марта 2011

Я что-то здесь не так делаю?

Если я вызываю свой класс из метода awakeFromNib, я могу проследить через NSLog, что класс вызывается до метода initWithFrame, но метод drawRect не вызывается. Если я создаю экземпляр через IBAction (скажем, кнопку), он работает нормально. Вот код:

-(void) awakeFromNib { 

[winMain center];

SplashScreen* newSplashScreen = [[SplashScreen alloc] initWithFrame:NSMakeRect(0.0, 0.0, 737.0, 303.0)];

[[[NSApp mainWindow] contentView] addSubview:newSplashScreen];
}

и мой файл SplashScreen.m:

#import "SplashScreen.h"

@implementation SplashScreen

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }
    return self;
}

- (void)drawRect:(NSRect)rect {

    NSImage *imageFromBundle = [NSImage imageNamed:@"sheet1.png"];
    [self setNeedsDisplay:YES];
    [imageFromBundle drawInRect:[self bounds] fromRect:NSMakeRect(0.0, 0.0, 737.0, 303.0) operation: NSCompositeCopy fraction:1.0];
}

@end

1 Ответ

0 голосов
/ 09 января 2013

Почему вы пометили представление как нуждающееся в перерисовке, прежде чем вы вообще что-то нарисовали?Это загрузит изображение, пометит представление как нуждающееся в перерисовке, загрузит изображение, отметит представление и т. Д. И т. Д. И т. Д. Удалите setNeedsDisplay: и прочитайте информацию о представлениях и управлении памятью.

...