Swift 下一个窗口打开时,如何关闭第一个窗口?
Xcode 9.2,macOS 10.12.6,Swift 4。我真的不知道我在做什么,所以请详细解释我该做什么 我正在努力使第一个窗口在第二个窗口打开时关闭。按钮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 我已经尝试了建议的解决方案,但这并没有解决我的问题 编辑: 我有两扇窗户,一扇通向另
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
实例执行单个目标操作。您正在尝试使用两种方法:
CONTINUE(:)
处设置断点来验证这一点。您会发现从未调用过action方法
因此,放弃行动方法&,或者使用:
可能是@ChrisZielinski的重复,该解决方案不起作用,感谢您提出建议,因为Xcode将
if segue.identifier
更改为if segue.identifier!。rawValue
,这很有效,所以您介意编辑您的答案以反映这一点吗?显然,我不能使用它两次,有人告诉我,“prepare(for:sender:)”已被覆盖
。有办法解决这个问题吗?另外,如果segue.identifier!添加另一个!。rawValue==“SegueName”{view.window?.close()
在现有的一个没有导致窗口关闭之后,您一定是在某个地方重写了它……同一范围内不能有两个相同的方法声明。&我不理解您的其他注释。我将把它添加到我的问题中