我想知道最有效的方法是将变量(例如:字符串)从一个常规 ViewController 传递到 TabViewController。 (不适用于 iOS => 仅适用于 OSX) 我一直在搜索并尝试不同的东西,我知道有“prepareForSegue”功能,但我似乎无法让它在选项卡 View 中工作。 (顺便说一句,我试图将超过 50-70 个变量传递到下一个 View )是否无法创建一个单独的文件来存储所有变量,然后将其导入到新的 View Controller 中?我知道这在 objective-c 中有效。 我在 Swift 中尝试了类似的方法,但是当我在第二个 View Controller 中调用它们时,这些值似乎没有保留在变量中。
请不要开始链接到常规 View Controller 的教程,因为我已经阅读了其中的 10 个教程,但似乎没有一个有帮助。
我还下载了 Swift 手册并检查了 Xcode 中的文档,但我不清楚。
PS:X 代码是纯粹的、彻头彻尾的狗屎。我认为苹果的一些东西比这个无用的 IDE 更容易访问。只是想通风一下...
最佳答案
虽然你找到了答案,但这里是用 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!")
}
}
在你的选项卡 View Controller 中:
class MyTabViewController: NSTabViewController, SomeDelegate {
func passData(sender: ViewController, data: String) {
print("Data is \(data)")
}
}
关于macos - 将数据从 ViewController 传递到 TabViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590112/