NSViewController-关闭窗口-Swift-Storyboard

Fre*_*edo 5 xcode cocoa swift

单击此窗口上安装的“继续”按钮后,我找不到关闭主窗口的正确方法。我尝试将此按钮连接到检查器的“ proceedclose”选项。我也尝试在代码中插入以下行:

import Cocoa
class ViewController: NSViewController {
    ...
    @IBAction func Envoi(sender: NSButton) {    
        self.view.window!.close()
    }
}
Run Code Online (Sandbox Code Playgroud)

它们都不起作用,没有任何反应,也没有错误报告。有人可以帮我解决吗?

小智 6

我有同样的问题。你的代码对我很有帮助。

然后我在 NS Lib 中检查了“VC <- view <- window <- windowController”。层次结构有。

当您从 VC 关闭窗口时,避免故事板变得奇怪。你可以解决这个问题,通过

self.view.window?.windowController?.close()
Run Code Online (Sandbox Code Playgroud)

只是一个快速的笔记。


l -*_*c l 6

    \n
  1. 注意每个NSViewController实例NSButton。修复管理NSViewControllerNSButton如果需要,
  2. \n
\n
class ViewController: NSViewController {\n    @IBOutlet weak var envoiButton: NSButton!\n    //\xe2\x80\xa6\n    @IBAction func doEnvoiButtonPressed(_ sender: NSButton) {    \n        print(self.hash)\n        print(self.envoiButton.hash)\n        // \xe2\x80\xa6 other code\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. isReleasedWhenClosed如果需要,可以在 Interface Builder 或代码中

    \n
  2. \n
  3. 通过关闭窗口NSButton @IBAction使用以下方法之一

    \n
  4. \n
\n
    \n
  • self.view.window!.windowController!.close() NSWindowController close() 突然关闭,无法要求用户确认。
  • \n
  • self.view.window!.close() NSWindow close() \n发送willCloseNotification通知
  • \n
  • self.view.window!.performClose(nil)NSWindow PerformClose(_:)发送到所有窗口关闭信号。首先,窗口委托(如果存在)。如果不存在委托,则调用任何 NSWindow 对象实现。如果返回 true 或未实现,则调用 then。是更全面、更灵活的选择)self.view.window!.performClose(self) windowShouldClose(_:)windowShouldClose(_:)windowShouldClose(_:)NSWindow close()performClose(_:)
  • \n
\n
class ViewController: NSViewController {\n    @IBAction func doEnvoiButtonPressed(_ sender: NSButton) {    \n        self.view.window!.performClose(nil) // or performClose(self)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n