将数据从 ViewController 传递到 TabViewController

Posted

技术标签:

【中文标题】将数据从 ViewController 传递到 TabViewController【英文标题】:Passing data from a ViewController to a TabViewController 【发布时间】:2015-09-15 15:34:32 【问题描述】:

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

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

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

PS:X-code 是纯粹的,彻头彻尾的 sh*t。我认为来自苹果的东西会比这个无用的 IDE 更容易访问。只是想通风...

【问题讨论】:

我解决了我自己的问题:我从 Swift 切换回了 Objective C,并刚刚声明了一个新的 NSObject 文件并将所有变量放入该文件中。然后我将我的 vars.h 头文件导入到我需要它的文件中,并且像一个魅力一样工作。希望这个答案可以帮助其他人...... 【参考方案1】:

虽然你找到了答案,但这里是使用 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)")
    

【讨论】:

以上是关于将数据从 ViewController 传递到 TabViewController的主要内容,如果未能解决你的问题,请参考以下文章

你如何将数据从 ViewController 传递到包含单独 ViewController 的 PageViewController,然后这些 ViewController 将使用这些数据?

将数据从 ViewController 传递到 TabViewController

将数据从 TableView 传递到 ViewController

将数据从 UITableViewCell 传递到 ViewController

将数据从 ViewController 传递到 NSObject

将数组数据从 ViewController 传递到 TableView