Xcode 9.2,macOS 10.12.6,Swift4。我真的不知道我在做什么,所以请详细说明要做什么。
我正在尝试使第二个窗口打开时第一个窗口关闭。按钮CONTINUE
通过show segue打开第二个窗口。
我按照here的说明进行了Control + Click和拖动操作,并尝试以两种不同的方式关闭时,继续按钮CONTINUE会关闭第一个窗口。 self.view.window?.close()
并设置等效于CMD
+ W
的密钥。
我已经尝试过建议使用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语句不会导致错误,但不会执行任何操作。
答案 0 :(得分:1)
与UIKit的UIControl
不同,AppKit仅允许每个NSControl
实例执行一次目标操作。您正在尝试使用两个:
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()
}
}