将数据从ViewController传递到TabViewController

时间:2015-09-15 15:34:32

标签: macos swift viewcontroller

我想知道将一个变量(例如:一个字符串)从一个常规ViewController传递给一个TabViewController是最有效的方法。 (不是iOS =>只有OSX) 我一直在寻找和尝试不同的东西,我知道有“prepareForSegue”功能,但我似乎无法让它适用于Tab视图。 (我正试图通过50-70变量传递到下一个视图顺便说一句)是否有办法创建一个单独的文件,我可以存储我的所有变量,然后将其导入新的视图控制器?我知道这在目标c中有效。 我在Swift中尝试了类似的方法,但是当我在第二个视图控制器中调用它们时,这些值似乎仍然存储在变量中。

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

我还下载了Swift手册并检查了Xcode中的文档,这对我来说还不清楚。

PS:X代码是纯粹的,完全是sh * t。我认为苹果的东西比这个无用的IDE更容易获得。只想通风......

1 个答案:

答案 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)")
    }
}