【发布时间】:2014-08-16 13:52:47
【问题描述】:
在一个测试 Swift 项目中,我继承了 NSWindowController。我的NSWindowController 子类旨在处理特定的 Nib 文件。因此,当我的窗口控制器初始化时,nib 文件由窗口控制器实例自动加载是可取的。在 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 应该使用init() 进行初始化,并且应该是 Window Controller 自己“拾取”其 Nib 文件并加载它。
【问题讨论】:
标签: cocoa swift subclass nib nswindowcontroller