你如何在 Swift 3.x 中使用 Storyboards/Cocoa 引用视图的窗口

lei*_*sey 1 macos xcode cocoa nswindow swift

随着 Xcode 和 Swift 的所有变化,我无法弄清楚如何以我在使用 XIB 的项目中所做的方式在 stotyboard 驱动的项目中解决视图的窗口。macOS 编程新手,如果这是基本内容,请提前道歉:

使用故事板时,我如何使用例如更改视图的窗口状态:

window.titleVisibility = .hidden
window.setContentSize(size)
Run Code Online (Sandbox Code Playgroud)

在一个 xib 驱动的项目中,我使用

@IBOutlet weak var window: NSWindow!
Run Code Online (Sandbox Code Playgroud)

但这似乎与故事板的工作方式不同。我如何使用故事板做同样的事情?任何帮助表示赞赏!

Leo*_*bus 5

您可以通过访问其 window 属性来获取视图窗口的引用。请注意,它不能在 view did load 内完成,但您可以使用延迟初始化程序为您的视图控制器创建一个窗口属性:

lazy var window: NSWindow! = self.view.window
Run Code Online (Sandbox Code Playgroud)

您可以在方法 viewWillAppear 中进行窗口自定义:

import Cocoa


class ViewController: NSViewController {

    lazy var window: NSWindow! = self.view.window

    override func viewWillAppear() {
        super.viewWillAppear()
        window.titleVisibility = .hidden
    }
}
Run Code Online (Sandbox Code Playgroud)