macos - 在 Swift 中处理窗口的关闭事件

标签 macos swift nswindowcontroller nsviewcontroller

如何使用swift处理窗口的关闭事件,例如询问“Are you sure you want to close the form?”

enter image description here

表单将在"is"的情况下关闭,在“否”的情况下不会关闭。显示消息框对我来说不是问题。

viewWillDisappear() 也适用于最小化,但我只需要关闭事件。

谢谢。

最佳答案

如上所说,您应该使 ViewController 成为 NSWindowDelegate,但您应该处理 windowWillClose,而不是 windowShouldClosewindowShouldClose是判断窗口是否可以关闭,不是窗口真正关闭的事件。

我还发现您需要在 viewDidAppear 中设置 delegate,而不是 viewDidLoad。对我而言,self.view.window 尚未在 viewDidLoad 中定义。

override func viewDidAppear() {
    self.view.window?.delegate = self
}

关于macos - 在 Swift 中处理窗口的关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215860/

相关文章:

macos - 如何在 Mac OS 上使用 homebrew 将 postgresql 从 10.1 降级到 9.6

ios - 如何使用以下数据填充 tableVIew 单元格?

ios - 在 Xcode 8 中存档时编译错误

macos - Home Brew 安装包获取无法将 HEAD 解析为修订版

mysql - PHPStorm 无法连接到本地 MySQL

ios - 如何知道 iOS 中是否显示了位置服务对话框?

macos - 将 contentViewController 设置为 NSTabViewController 后,NSWindow 以错误的大小启动

swift - 从 NSWindowController 以编程方式呈现 View Controller

objective-c - NSWindow 设置框架高于屏幕

cocoa - 在不使用 QuickTime API 的情况下将视频帧录制到电影中的 10.6 兼容方法是什么?