1

我想要做的是为打开一个窗口的对象创建一个方法。在这个窗口中,我想输出对象实例的一些属性。为此,我创建了一个 NSObject 的“Profile”子类,它有一个名为“view”的 NSWindowController 属性。

@interface Profile : NSObject {
    \\...
}

@property (readwrite, assign) NSWindowController *view;

由于我无法使用 Interface Builder 将“视图”连接到窗口(或者至少我不知道如何),所以我必须使用“initWithWindowNibName”来连接。所以我尝试像这样覆盖“配置文件”的 init 方法:

-(Profile *)init{
    self = [super init];
    if(self){
        [[self view] initWithWindowNibName:@"Profile"];
    }
    return self;
}

我不知道我的方法是否正确,事实是当我尝试显示它没有出现的窗口时。这是我尝试的方法:

Profile *profile = [[Profile alloc] init];
[[profile view] showWindow:self];

希望你能帮忙:)

4

1 回答 1

2

你不想要这样的东西:

@interface Profile:NSObject

@property (nonatomic, strong) NSWindowController *windowController;

@end

和:

- (Profile *)init {
    self = [super init];
    if( !self ) { return nil; }

    self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"Profile"];
    return self;
}

和:

// show window
Profile *profile = [[Profile alloc] init];
[[profile windowController] showWindow:self];

(我假设 ARC。)

编辑: 为了让 OP 清楚起见,我遵循了他的属性命名法,即命名NSWindowController属性view。这是令人困惑的,虽然因为 aNSWindowController不是一个视图。为了让其他人清楚,我已经改变了它。

于 2012-09-24T00:26:27.757 回答