Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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:awakeFromNib实例化NSView子类drawRect不工作_Cocoa_Nsview - Fatal编程技术网

Cocoa:awakeFromNib实例化NSView子类drawRect不工作

Cocoa:awakeFromNib实例化NSView子类drawRect不工作,cocoa,nsview,Cocoa,Nsview,我做错什么了吗 如果我从awakeFromNib方法调用我的类,我可以通过NSLog跟踪该类被调用到initWithFrame方法,但是drawRect方法没有被调用。如果我通过一个iAction(比如一个按钮)进行实例化,它就可以正常工作。代码如下: -(void) awakeFromNib { [winMain center]; SplashScreen* newSplashScreen = [[SplashScreen alloc] initWithFrame:NSMakeRect(

我做错什么了吗

如果我从awakeFromNib方法调用我的类,我可以通过NSLog跟踪该类被调用到initWithFrame方法,但是drawRect方法没有被调用。如果我通过一个iAction(比如一个按钮)进行实例化,它就可以正常工作。代码如下:

-(void) awakeFromNib { 

[winMain center];

SplashScreen* newSplashScreen = [[SplashScreen alloc] initWithFrame:NSMakeRect(0.0, 0.0, 737.0, 303.0)];

[[[NSApp mainWindow] contentView] addSubview:newSplashScreen];
}
和我的SplashScreen.m文件:

#import "SplashScreen.h"

@implementation SplashScreen

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }
    return self;
}

- (void)drawRect:(NSRect)rect {

    NSImage *imageFromBundle = [NSImage imageNamed:@"sheet1.png"];
    [self setNeedsDisplay:YES];
    [imageFromBundle drawInRect:[self bounds] fromRect:NSMakeRect(0.0, 0.0, 737.0, 303.0) operation: NSCompositeCopy fraction:1.0];
}

@end

为什么在向视图绘制任何内容之前,就将视图标记为需要重新绘制?这将加载图像,将视图标记为需要重新绘制,加载图像,标记视图等。。。。 删除设置需要显示:
阅读视图和内存管理。

如果您可以开发一个示例应用程序并在某处提供,这将更容易理解。我在4shared上发布了一个文件,不确定您是否必须加入下载: