Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa:NSView未绘制矩形_Cocoa_Nsview - Fatal编程技术网

Cocoa:NSView未绘制矩形

Cocoa:NSView未绘制矩形,cocoa,nsview,Cocoa,Nsview,我有一个名为ServerImage(NSView的子类)的类,我正在从AppController调用它,但由于某些原因它不会显示在屏幕上。我有其他的观点,我可以画和添加图像,但出于某种原因,不是这一个。我确信我的代码中遗漏了一些东西,但就是看不到。以下是AppController的相关代码: //loop through masterServerDict and get server status NSMutableString* key; for(key in masterServer

我有一个名为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

我可以让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; 

}