2011-03-11 102 views
1

我有一個名爲ServerImage(NSView的子)的類,我從我的AppController調用,但由於某種原因它不會畫到屏幕上。我有其他意見,我可以繪製和添加圖像,但由於某種原因不是這一個。我確定我在代碼中丟失了一些東西,但是我沒有看到它。下面是從AppController的相關代碼:可可:NSView沒有繪製矩形

//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

回答

0

檢查[[NSApp mainWindow] contentView]是非零。同時檢查它是否指向右側窗口,並且座標是否正確(可見)。

+0

檢查[[NSApp mainWindow] contentView]是否爲非零 - 我只是記錄它?我從AppController記錄了它並得到了(null),但我不知道我應該期待看到什麼。 – PruitIgoe 2011-03-11 14:13:56

+0

你也可以聲明它:'assert([NSApp mainWindow]!= nil);' – 2011-03-11 14:16:07

+0

該應用程序是1000x610,沒有翻轉,因此x = 200.0,y = 0.0的座標很好,應該在左下角的某處。只有一個窗口,我使用默認引用(mainWindow)。 – PruitIgoe 2011-03-11 14:17:25