iOS在视图控制器之间共享数据

我想分享一些数据(自定义对象数组)从不同的ViewController,当标签更改。

在这里输入图像说明

1 = TabController
2 = ViewController
3 = ViewController
4 = SplitViewController
5 = MapView
6 = ViewController
7 = TableViewController

我想分享:7到3,7到2之间的数据

做这个的最好方式是什么?

你可以做这样的事情:

 class DataSource { static let sharedInstance = DataSource() var data: [AnyObject] = [] } 

用法:

 DataSource.sharedInstance.data 

另一个简单的解决scheme是创build一个视图包来保存要在VC之间共享的数据:

 import Foundation class ViewBag { internal static var internalDictionary = Dictionary<String, AnyObject>() class func get(key: String) -> AnyObject? { return internalDictionary[key] } class func add(key: String, data: AnyObject) { internalDictionary[key] = data } } class MyClass { } // Example let myClassArray = [MyClass(),MyClass(),MyClass(),MyClass()] ViewBag.add("myKey", data: myClassArray) ViewBag.get("myKey")?.count // You must do a proper casting here 

什么data ?string? NSNotification是最好的。一些数据?保存到NSUserDefaults.A很多数据?保存到文件并阅读它。 以下是沿视图控制器链查找vc的示例代码:

 let vc7 = UIViewController() let tabBarVC = vc7.splitViewController?.tabBarController let vc2 = tabBarVC?.viewControllers?[1] let vc3 = tabBarVC?.viewControllers?[2]