我想知道将一个变量(例如:一个字符串)从一个常规ViewController传递给一个TabViewController是最有效的方法。 (不是iOS =>只有OSX) 我一直在寻找和尝试不同的东西,我知道有“prepareForSegue”功能,但我似乎无法让它适用于Tab视图。 (我正试图通过50-70变量传递到下一个视图顺便说一句)是否有办法创建一个单独的文件,我可以存储我的所有变量,然后将其导入新的视图控制器?我知道这在目标c中有效。 我在Swift中尝试了类似的方法,但是当我在第二个视图控制器中调用它们时,这些值似乎仍然存储在变量中。
请不要开始链接到常规视图控制器的教程,因为我已经阅读了其中的10个,但它们似乎都没有帮助。
我还下载了Swift手册并检查了Xcode中的文档,这对我来说还不清楚。
PS:X代码是纯粹的,完全是sh * t。我认为苹果的东西比这个无用的IDE更容易获得。只想通风......
答案 0 :(得分:0)
虽然你找到了答案,但这是用Swift
做的方法import Cocoa
@objc protocol SomeDelegate {
func passData(sender: ViewController, data: String)
}
class ViewController: NSViewController {
weak var delegate: SomeDelegate?
override func viewDidLoad() {
super.viewDidLoad()
if let myTabViewController = parentViewController as? MyTabViewController {
self.delegate = myTabViewController
}
}
@IBAction func buttonPressed(sender: AnyObject) {
delegate?.passData(self, data: "Hello, world!")
}
}
在标签视图控制器中:
class MyTabViewController: NSTabViewController, SomeDelegate {
func passData(sender: ViewController, data: String) {
print("Data is \(data)")
}
}