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]