我想分享一些数据(一组自定义对象) 来自不同的ViewController,当标签更改时。
1 = TabController
2 = ViewController
3 = ViewController
4 = SplitViewController
5 = MapView
6 = ViewController
7 = TableViewController
我想在以下各项之间共享数据: 7至3,7至2
这样做的最佳方式是什么?
答案 0 :(得分:2)
你可以这样做:
class DataSource {
static let sharedInstance = DataSource()
var data: [AnyObject] = []
}
用法:
DataSource.sharedInstance.data
答案 1 :(得分:1)
另一个简单的解决方案是创建一个视图包来保存要在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
答案 2 :(得分:0)
data
是什么?一个字符串?NSNotification
是最好的。一些数据?保存到NSUserDefaults.A很多数据?保存到文件并读取它。
以下是沿视图控制器链查找vc的示例代码:
let vc7 = UIViewController()
let tabBarVC = vc7.splitViewController?.tabBarController
let vc2 = tabBarVC?.viewControllers?[1]
let vc3 = tabBarVC?.viewControllers?[2]