下一个窗口打开时,如何关闭第一个窗口?

时间:2019-09-07 02:13:26

标签: swift xcode macos

Xcode 9.2,macOS 10.12.6,Swift4。我真的不知道我在做什么,所以请详细说明要做什么。

我正在尝试使第二个窗口打开时第一个窗口关闭。按钮CONTINUE通过show segue打开第二个窗口。 img1 我按照here的说明进行了Control + Click和拖动操作,并尝试以两种不同的方式关闭时,继续按钮CONTINUE会关闭第一个窗口。 self.view.window?.close()并设置等效于CMD + W的密钥。img2

我已经尝试过建议使用here的解决方案,但这并不能解决我的问题。

编辑:


我有两个窗口,每个窗口转到另一个窗口。这是代码:

    override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
        super.prepare(for: segue, sender: sender)

        if segue.identifier!.rawValue == "SegueToWIR" {
            view.window?.close()
        }
        //neither if or else if make this work
        if segue.identifier!.rawValue == "SegueToWarning" {
            view.window?.close()
        }
    }

第二个if语句不会导致错误,但不会执行任何操作。

1 个答案:

答案 0 :(得分:1)

与UIKit的UIControl不同,AppKit仅允许每个NSControl实例执行一次目标操作。您正在尝试使用两个:

  1. show segue。
  2. 使用控件 +单击并拖动方法创建的动作方法连接。

segue优先。您可以通过在CONTINUE(_:)处设置断点来验证这一点。您会发现action方法永远不会被调用!

因此取消操作方法,或者使用:

  

?注意:以下实现对Swift 4.2+有效。

override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    super.prepare(for: segue, sender: sender)

    // Note: For Swift 4, replace `segue.identifier` with `segue.identifier?.rawValue`.
    if segue.identifier == "my-segue-identifier" {
        view.window?.close()
    }
}