如何在prepare(for segue :)中在viewControllers之间通过引用传递快速数组?

时间:2018-08-03 10:57:07

标签: ios arrays swift xcode pass-by-reference

我知道swift数组结构是按值而不是引用复制的。是否有一种简单的方法可以在我的prepare(for segue:...方法中通过引用强制转换或以其他方式传递数组,以便可以将对数组的引用从viewController A传递到viewController B?

我已经看到一些有关将数组传递给函数的答案,但我只是想将其传递给其他viewControllers

5 个答案:

答案 0 :(得分:1)

为您的数组创建包装器类,然后将其传递给您想要的位置:

class ArrayWrapper {
    let array: [YourType]

    init(array: [YourType]) {
        self.array = array
    }
}

答案 1 :(得分:0)

是的,您可以通过将值从viewController A传递到viewController B来实现。您要做的就是在ViewController B中获取一个数组(arrB)。

let VB = self.storyboard?.instantiateViewController(withIdentifier: "viewControllerB") as! viewControllerB
vc.arrA = arrA
 self.navigationController?.pushViewController(vc, animated: true)

这不会传递参考,而是将area的值传递给arrB。

答案 2 :(得分:0)

如果您想使用segue在您的第一个控制器中使用创建数组将阵列从一个控制器转移到另一个控制器

 var dataSource : [ANY MODEL CLASS] = []

使用此方法通过segue传输数据

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if (segue.identifier == "YOURSEGUE") {
            let vc = segue.destination as! YOUCONTROLLER
             vc.myArray = self.dataSource
        }

在第二个控制器中创建相同类型的数组

  var myArray : [ANY MODEL CLASS] = []

所以现在当您使用“ YOURSEGUE”命令移动到另一个控制器时,您的阵列将具有数据

答案 3 :(得分:0)

创建这样的全局数组

scale_fill_identity(guide = "legend",
                    labels = c("DUMMY LABEL",
                               "DUMMY LABEL",
                               "Small Petal",
                               "Big Petal"),
                    breaks = unique(iris$custom_colors))

现在您可以在任何地方使用它。但这不是一件好事

答案 4 :(得分:0)

如果将数组转换为NSArray,则可以完成工作。