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

Swift 下一个窗口打开时,如何关闭第一个窗口?,swift,xcode,macos,Swift,Xcode,Macos,Xcode 9.2,macOS 10.12.6,Swift 4。我真的不知道我在做什么,所以请详细解释我该做什么 我正在努力使第一个窗口在第二个窗口打开时关闭。按钮CONTINUE通过show segue打开第二个窗口。 如前所述,我按照控件+单击并拖动的方式操作,并尝试使“继续”按钮在以两种不同方式关闭第一个窗口时关闭该窗口;使用self.view.window?.close()并将键设置为相当于CMD+W 我已经尝试了建议的解决方案,但这并没有解决我的问题 编辑: 我有两扇窗户,一扇通向另

Xcode 9.2,macOS 10.12.6,Swift 4。我真的不知道我在做什么,所以请详细解释我该做什么

我正在努力使第一个窗口在第二个窗口打开时关闭。按钮
CONTINUE
通过show segue打开第二个窗口。 如前所述,我按照控件+单击并拖动的方式操作,并尝试使“继续”按钮在以两种不同方式关闭第一个窗口时关闭该窗口;使用
self.view.window?.close()
并将键设置为相当于
CMD
+
W

我已经尝试了建议的解决方案,但这并没有解决我的问题

编辑:


我有两扇窗户,一扇通向另一扇。代码如下:

    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语句不会导致错误,但不会执行任何操作。

与UIKit的
UIControl
不同,AppKit只允许每个
NSControl
实例执行单个目标操作。您正在尝试使用两种方法:

  • 节目开始了
  • 使用control+单击并拖动方法创建的操作方法连接
  • 顺序优先。您可以通过在
    CONTINUE(:)
    处设置断点来验证这一点。您会发现从未调用过action方法

    因此,放弃行动方法&,或者使用:


    可能是@ChrisZielinski的重复,该解决方案不起作用,感谢您提出建议,因为Xcode将
    if segue.identifier
    更改为
    if segue.identifier!。rawValue
    ,这很有效,所以您介意编辑您的答案以反映这一点吗?显然,我不能使用它两次,有人告诉我,
    “prepare(for:sender:)”已被覆盖
    。有办法解决这个问题吗?另外,如果segue.identifier!添加另一个
    !。rawValue==“SegueName”{view.window?.close()
    在现有的一个没有导致窗口关闭之后,您一定是在某个地方重写了它……同一范围内不能有两个相同的方法声明。&我不理解您的其他注释。我将把它添加到我的问题中