Какао: NSView не рисует прямоугольник - PullRequest
1 голос
/ 11 марта 2011

У меня есть класс с именем ServerImage (подраздел NSView), который я вызываю из моего AppController, но по какой-то причине он не отображается на экране. У меня есть другие виды, которые я могу рисовать и добавлять изображения, но по какой-то причине не этот. Я уверен, что чего-то не хватает в моем коде, но я просто не вижу этого. Вот соответствующий код из AppController:

//loop through masterServerDict and get server status   
NSMutableString* key; 
for(key in masterServerDict) { 

    ServerImage* newImage = [[ServerImage alloc] initWithFrame:NSMakeRect(200.0, 0.0, 48.0, 48.0)];

    [newImage setServerName:key];
    [[[NSApp mainWindow] contentView] addSubview:newImage];
    [newImage setNeedsDisplay:YES];


}

masterServerDict - это изменяемый словарь, ключ - это имя сервера, объект - это массив, он содержит пути smb и afp к серверу, а также, подключен он или нет.

Вот ServerImage.h

#import <Cocoa/Cocoa.h>


    @interface ServerImage : NSView {

        NSString * serverName; 
    }

    - (void) setServerName : (NSString* ) s; 

@end

и ServerImage.m

#import "ServerImage.h"


@implementation ServerImage

    - (id)initWithFrame:(NSRect)frame {

        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code here.
            NSLog(@"%f", self.frame.origin.x);
        }

        return self;
    }

- (void)drawRect:(NSRect)rect {
    NSLog(@"drawrect");
    [[NSColor redColor] set]; 
    NSRectFill(rect);
}

- (void) setServerName : (NSString* ) s { 
    NSLog(@"method");
    serverName = s; 

}

Я могу получить методы init и setServerName для регистрации, но не drawRect ...

1 Ответ

0 голосов
/ 11 марта 2011

Проверьте, не является ли [[NSApp mainWindow] contentView] ненулевым. Также проверьте, относится ли оно к правому окну и хорошая ли координата (видимая).

...