当选项卡更改时,我想共享来自不同ViewController的一些数据(自定义对象数组) 。iOS在视图控制器之间共享数据
1 = TabController
2 = ViewController
3 = ViewController
4 = SplitViewController
5 = MapView
6 = ViewController
7 = TableViewController
我想共享数据: 7到3,7到2
这样做的最佳方法是什么?
当选项卡更改时,我想共享来自不同ViewController的一些数据(自定义对象数组) 。iOS在视图控制器之间共享数据
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
什么是data
?一串? NSNotification
是最好的。一些数据?保存到NSUserDefaults.A很多数据?保存到文件并阅读它。 这里是沿视图控制器链中发现的VC例子代码:
let vc7 = UIViewController()
let tabBarVC = vc7.splitViewController?.tabBarController
let vc2 = tabBarVC?.viewControllers?[1]
let vc3 = tabBarVC?.viewControllers?[2]
另一种简单的解决方案是创建一个视图包含要共享的数据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
我已经试过这个,但如果我改变标签从7的数据丢失 – Flo
你确定你尝试过'sharedInstance'吗? – Laffen