我在 storyboard 文件中进行了以下测试设置:
我希望发生以下事情:
这是我使用的代码:
在 ViewController.swift :
中import Cocoa
class ViewController: NSViewController {
var foo = 3
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func keyUp(with event: NSEvent) {
print("Key Pressed!")
}
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier?._rawValue == "segue" {
if let destination = segue.destinationController as? SecondViewController {
destination.foo = foo
}
}
}
}
在 SecondViewController.swift :
中import Cocoa
class SecondViewController: NSViewController {
var foo = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
print(foo)
}
override func keyUp(with event: NSEvent) {
print("Key Pressed!")
}
}
当我运行时会发生以下情况:
这些是我自己做出的结论:
变量没有从第一个控制器传递到第二个控制器,因为segue位于 ViewController 和 Window2 之间,而不是 SecondViewController 。但是,当我将segue从 ViewController 更改为 SecondViewController 时,显示 SecondViewController 的窗口无法从 Window获取属性2 。 我不知道如何在视图控制器之间发送变量,还要知道如何同时向显示这些控制器的窗口设置属性。
至于按键,我不知道它为什么不能工作。每当我打开任何一个窗口时按一个键,我都会听到一个错误的声音。我已经尝试通过调用 self.becomeFirstResponder()手动将视图控制器设置为两个控制器中 viewDidLoad()方法中的第一个响应者,但是这样做了没有不同。我在网上搜索过,但没有找到任何描述或讨论类似问题的信息,文档或文献。
最后,这篇文章可以分为两个问题:
1 |如何在视图控制器之间发送变量,同时仍然保持窗口控制器的属性? 的 2 |如何正确按键 在多个窗口中处理?
感谢您的帮助