我有一个名为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 ...
答案 0 :(得分:0)
检查[[NSApp mainWindow] contentView]
是否为非零。同时检查它是否引用了正确的窗口并且坐标是否良好(可见)。