gpt4 book ai didi

objective-c - 将对象上的自定义 init 方法设置为 initWithWindowNibName NSWindowController 属性

转载 作者:行者123 更新时间:2023-12-03 17:04:47 25 4
gpt4 key购买 nike

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

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

@property (readwrite, assign) NSWindowController *view;

由于我无法使用 Interface Builder 将“view”连接到窗口(或者至少我不知道如何),所以我必须使用“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];

希望能帮到你:)

最佳答案

你不想要这样的东西吗:

@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 不是 View 。为了让其他人清楚起见,我对其进行了更改。

关于objective-c - 将对象上的自定义 init 方法设置为 initWithWindowNibName NSWindowController 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com