Cocoa:NSView未绘制矩形
我有一个名为ServerImage(NSView的子类)的类,我正在从AppController调用它,但由于某些原因它不会显示在屏幕上。我有其他的观点,我可以画和添加图像,但出于某种原因,不是这一个。我确信我的代码中遗漏了一些东西,但就是看不到。以下是AppController的相关代码:Cocoa:NSView未绘制矩形,cocoa,nsview,Cocoa,Nsview,我有一个名为ServerImage(NSView的子类)的类,我正在从AppController调用它,但由于某些原因它不会显示在屏幕上。我有其他的观点,我可以画和添加图像,但出于某种原因,不是这一个。我确信我的代码中遗漏了一些东西,但就是看不到。以下是AppController的相关代码: //loop through masterServerDict and get server status NSMutableString* key; for(key in masterServer
//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
我可以让init和setServerName方法记录日志,但不能让drawRect…检查
[[NSApp mainWindow]contentView]
是否为非空。还要检查它是否指向右侧窗口,并且坐标是否良好(可见)。检查[[NSApp mainWindow]contentView]是否为非零-我是否只记录它?我确实从AppController记录了它,得到了(null),但我不确定应该看到什么。您也可以断言它:assert([NSApp mainWindow]!=nil)代码>应用程序为1000x610,未翻转,因此x=200.0,y=0.0坐标良好,应位于左下角的某个位置。只有一个窗口,我使用默认的引用(mainWindow)。
#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;
}