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