以编程方式隐藏和关闭当前NSViewController的窗口

时间:2018-01-20 05:41:04

标签: swift macos cocoa

我想在func viewDidLoad()中隐藏/关闭我的主应用程序窗口,只有在某些事件需要时才显示/取消隐藏主窗口。

我尝试了self.view.window?.close(),但这留下了一个白色的窗口。我也试过了NSApp.hide(nil)但是我无法取消隐藏NSApp.unhide(nil)。以下是一些示例代码:

override func viewDidLoad() {
   super.viewDidLoad()
   // Do any additional setup after loading the view.
   NSApp.hide(nil)
   runTest()
}

func runTest () {
   let check = false

   if check == false {
      NSApp.unhide(nil)
   }
}

1 个答案:

答案 0 :(得分:1)

来自NSWindow documentation

  

func orderOut(_ sender: Any?)

     

从屏幕列表中删除窗口,该窗口隐藏了窗口。

     

func makeKeyAndOrderFront(_ sender: Any?)

     

将窗口移动到屏幕列表的前面,在其级别内,并使其成为关键窗口;也就是说,它显示了窗口。

HideClose是两回事:

  

如果窗口是键或主窗口,则紧跟在其后面的窗口对象将成为键或主键。调用orderOut(_:)会导致窗口从屏幕上移除,但不会导致窗口被释放。有关何时释放窗口的信息,请参阅close()方法。在子窗口上调用orderOut(_:)会导致窗口在被删除之前从其父窗口中删除。

隐藏应用程序(NSApp.hide(nil)是另一回事:它

  

隐藏所有接收者的窗口,并激活下一个应用程序。