macos - 将数据从 ViewController 传递到 TabViewController

标签 macos swift viewcontroller

我想知道最有效的方法是将变量(例如:字符串)从一个常规 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/

相关文章:

objective-c - 在使用 ARC 的项目中使用 ASIHTTPRequest

macos - VSCode [远程开发] [转发端口] 是如何工作的?

php - 愚蠢的想法 : Mac speech from PHP server?

ios - 接收 applicationContext 并避免重新传输的正确方法? - WatchConnectivity

ios - 如何使用 UIView 画线?

ios - 如何在 swift 中将值从可重用的 PickerView.xib 中传递出去

ios - 在 Spritekit 中隐藏/显示 iAd

c++ - 在 OS X 上安装 Boost 1.48.0

ios - 如何为没有 Storyboard的 UIViewController (Swift) 提供标识符?

swift - 禁用按钮并将其变为灰色