iOS在viewcontrollers之间共享数据

时间:2016-04-08 08:15:39

标签: ios swift data-sharing

我想分享一些数据(一组自定义对象)  来自不同的ViewController,当标签更改时。

enter image description here

1 = TabController
2 = ViewController
3 = ViewController
4 = SplitViewController
5 = MapView
6 = ViewController
7 = TableViewController

我想在以下各项之间共享数据: 7至3,7至2

这样做的最佳方式是什么?

3 个答案:

答案 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]