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
檢查[[NSApp mainWindow] contentView]是否爲非零 - 我只是記錄它?我從AppController記錄了它並得到了(null),但我不知道我應該期待看到什麼。 – PruitIgoe 2011-03-11 14:13:56
你也可以聲明它:'assert([NSApp mainWindow]!= nil);' – 2011-03-11 14:16:07
該應用程序是1000x610,沒有翻轉,因此x = 200.0,y = 0.0的座標很好,應該在左下角的某處。只有一個窗口,我使用默認引用(mainWindow)。 – PruitIgoe 2011-03-11 14:17:25