将数据从 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