Macos 将数据从ViewController传递到TabViewController
我想知道最有效的方法是传递一个变量,比如说:从一个常规ViewController到一个TabViewController的字符串。非iOS=>仅OSX 我一直在搜索和尝试不同的东西,我知道有prepareForSegue函数,但我似乎无法让它在选项卡视图中工作。 我正在尝试将50-70个变量传递到下一个视图顺便说一句,没有办法创建一个单独的文件,我可以在其中存储所有的变量,然后将其导入到新的视图控制器中?我知道这在目标c中有效。 我在Swift中尝试了类似的方法,但是当我在第二个视图控制器中调用VAR时,这些值似乎并没有保存在VAR中 请不要开始链接到常规视图控制器的教程,因为我已经阅读了其中的10篇,但似乎没有一篇有帮助 我还下载了Swift手册,并检查了Xcode中的文档,但我并不清楚Macos 将数据从ViewController传递到TabViewController,macos,swift,viewcontroller,Macos,Swift,Viewcontroller,我想知道最有效的方法是传递一个变量,比如说:从一个常规ViewController到一个TabViewController的字符串。非iOS=>仅OSX 我一直在搜索和尝试不同的东西,我知道有prepareForSegue函数,但我似乎无法让它在选项卡视图中工作。 我正在尝试将50-70个变量传递到下一个视图顺便说一句,没有办法创建一个单独的文件,我可以在其中存储所有的变量,然后将其导入到新的视图控制器中?我知道这在目标c中有效。 我在Swift中尝试了类似的方法,但是当我在第二个视图控制器中调
PS:X代码是纯粹的和完全的sh*t。我认为苹果的一些东西会比这个无用的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!")
}
}
在选项卡视图控制器中:
class MyTabViewController: NSTabViewController, SomeDelegate {
func passData(sender: ViewController, data: String) {
print("Data is \(data)")
}
}
我解决了自己的问题:我从Swift切换回Objective C,刚刚声明了一个新的NSObject文件,并将所有变量放入该文件中。然后我将我的vars.h头文件导入到我需要它的文件中,并像一个符咒一样工作。希望这个答案能帮助其他人。。。