Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 将数据从ViewController传递到TabViewController_Macos_Swift_Viewcontroller - Fatal编程技术网

Macos 将数据从ViewController传递到TabViewController

Macos 将数据从ViewController传递到TabViewController,macos,swift,viewcontroller,Macos,Swift,Viewcontroller,我想知道最有效的方法是传递一个变量,比如说:从一个常规ViewController到一个TabViewController的字符串。非iOS=>仅OSX 我一直在搜索和尝试不同的东西,我知道有prepareForSegue函数,但我似乎无法让它在选项卡视图中工作。 我正在尝试将50-70个变量传递到下一个视图顺便说一句,没有办法创建一个单独的文件,我可以在其中存储所有的变量,然后将其导入到新的视图控制器中?我知道这在目标c中有效。 我在Swift中尝试了类似的方法,但是当我在第二个视图控制器中调

我想知道最有效的方法是传递一个变量,比如说:从一个常规ViewController到一个TabViewController的字符串。非iOS=>仅OSX 我一直在搜索和尝试不同的东西,我知道有prepareForSegue函数,但我似乎无法让它在选项卡视图中工作。 我正在尝试将50-70个变量传递到下一个视图顺便说一句,没有办法创建一个单独的文件,我可以在其中存储所有的变量,然后将其导入到新的视图控制器中?我知道这在目标c中有效。 我在Swift中尝试了类似的方法,但是当我在第二个视图控制器中调用VAR时,这些值似乎并没有保存在VAR中

请不要开始链接到常规视图控制器的教程,因为我已经阅读了其中的10篇,但似乎没有一篇有帮助

我还下载了Swift手册,并检查了Xcode中的文档,但我并不清楚


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头文件导入到我需要它的文件中,并像一个符咒一样工作。希望这个答案能帮助其他人。。。