gpt4 book ai didi

cocoa - Swift 中的 NSWindowController。使用 Nib 进行子类化和初始化

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:49 25 4
gpt4 key购买 nike

在一个测试 Swift 项目中,我继承了 NSWindowController。我的 NSWindowController 子类设计用于处理特定的 Nib 文件。那么,当我的窗口 Controller 初始化时,nib 文件由窗口 Controller 实例自动加载是可取的。在 Objective-C 中,这是通过以下方式实现的:

@implementation MyWindowController

- (id)init {
self = [super initWithWindowNibName:"MyWindowNib"]
if (self) {
// whatever
}
return self
}

@end

现在,在 Swift 中这是不可能的:init() 不能调用 super.init(windowNibName:),因为后者没有被声明为指定的初始化器,但为方便起见,NSWindowController

这如何在 Swift 中完成?我没有看到一个简单的方法来做这件事。

P.S.:我看到了关于这个主题的其他问题,但是,只要我能够理解,解决方案都指向通过调用 init(windowNibName:) 来初始化 Window Controller .请注意,这不是所需的行为。窗口 Controller 应该使用 init() 进行初始化,并且应该是窗口 Controller 本身“拾取”它的 Nib 文件并加载它。

最佳答案

如果您使用 init() 只是为了调用 super.init(windowNibName:),您可以改写 windowNibName 变量.

override var windowNibName: String  {
get {
return "MyWindowNib"
}
}

那么就没有必要搞乱初始化器了。

关于cocoa - Swift 中的 NSWindowController。使用 Nib 进行子类化和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340812/

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