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