[英]iOS sharing data between viewcontrollers
I want to share some data (an array of custom objects) from different ViewController, when tab changed. 标签更改时,我想共享来自不同ViewController的一些数据(自定义对象的数组)。
1 = TabController
1 = TabController
2 = ViewController
2 = ViewController
3 = ViewController
3 = ViewController
4 = SplitViewController
4 = SplitViewController
5 = MapView
5 = MapView
6 = ViewController
6 = ViewController
7 = TableViewController
7 = TableViewController
I want to share data between: 7 to 3, 7 to 2 我想在以下之间共享数据:7到3、7到2
What is the best way to do this? 做这个的最好方式是什么?
You could do something like this: 您可以执行以下操作:
class DataSource {
static let sharedInstance = DataSource()
var data: [AnyObject] = []
}
Usage: 用法:
DataSource.sharedInstance.data
Another simple solution is creating a view bag to hold data to be shared between VC: 另一个简单的解决方案是创建一个视图包来保存要在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
What's the data
?A string? data
什么?字符串? NSNotification
is best.A few data?Save to NSUserDefaults.A lot of data?Save to file and read it. NSNotification
最好。少量数据保存到NSUserDefaults中。大量数据保存到文件中并读取。 Here is example code for find vc along view controller chain: 这是沿视图控制器链查找vc的示例代码:
let vc7 = UIViewController()
let tabBarVC = vc7.splitViewController?.tabBarController
let vc2 = tabBarVC?.viewControllers?[1]
let vc3 = tabBarVC?.viewControllers?[2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.