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