自定义类 - IBOutlets不工作?

时间:2009-12-31 01:50:17

标签: objective-c macos

这可能是一个非常容易回答的问题,但对于我的生活,我似乎无法让它发挥作用。

我正在使用Objective-C为Mac OS X开发,我创建了一个自定义类(AppController.h和.m)。我手写了两个IBOutlets(NSTextField,NSImageView),确保在.h中执行“@property”行,在.m文件中执行“@synthesize”。我确保通过拖动NSObject文件并将其类设置为AppController,然后进行连接,在Interface Builder中链接它们。

我没有收到任何错误,但是当我做一个非常简单的调用时: [title setAlphaValue:0.0];

没有任何反应。你们可以解决的任何问题都会很棒。

我的代码:

AppController.h

#import <Cocoa/Cocoa.h>

@interface AppController : NSObject {
    IBOutlet NSImageView *movie_icon;
    IBOutlet NSTextField *title;

}

-(void)startUp;
@property (nonatomic, retain) NSImageView *movie_icon;
@property (nonatomic, retain) NSTextField *title;

@end

AppController.m

#import "AppController.h"
@implementation AppController
@synthesize title;
@synthesize movie_icon;

-(void)startUp{
     NSLog(@"Starting App Controller...");
     [title setAlphaValue:0.0];
}
@end

的main.m

#import <Cocoa/Cocoa.h>
#include "AppController.h"

int main(int argc, char *argv[])
{
    AppController *ctrl;
    ctrl = [[AppController alloc] init];

    [ctrl startUp];
    return NSApplicationMain(argc,  (const char **) argv);
}

1 个答案:

答案 0 :(得分:2)

在完全加载之前,您将无法访问NIB文件中的任何插座。尝试覆盖AppController中的-awakeFromNib,并从那里调用-startUp。