我要做的是为打开窗口的对象创建一个方法。 在这个窗口中,我想输出对象实例的一些属性。 为此,我创建了一个NSObject的“Profile”子类,它有一个名为“view”的NSWindowController属性。
@interface Profile : NSObject {
\\...
}
@property (readwrite, assign) NSWindowController *view;
由于我无法使用Interface Builder将“视图”连接到窗口(或者至少我不知道如何),我必须使用“initWithWindowNibName”。所以我尝试重写“Profile”的init方法,如下所示:
-(Profile *)init{
self = [super init];
if(self){
[[self view] initWithWindowNibName:@"Profile"];
}
return self;
}
我不知道我的方法是否正确,事实是当我尝试显示窗口时它没有出现。这是我尝试的方式:
Profile *profile = [[Profile alloc] init];
[[profile view] showWindow:self];
希望你能提供帮助:)
答案 0 :(得分: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
。这很令人困惑,但因为NSWindowController
不是视图。为了清楚别人,我改变了它。