如何在多个视图控制器上使用数组?

时间:2016-11-26 07:22:57

标签: ios swift firebase uinavigationcontroller firebase-realtime-database

我一直在玩很多涉及数组和滚动视图的东西。我大部分都呆在视图控制器的范围内,所以通常我会从firebase中获取数据,将其添加到数组中,然后将其发送到tableview或collectionview。我现在要做的是实际在viewcontrollers(或同一视图控制器的多个副本)之间导航,并将数组项应用于每个视图控制器。

例如,我希望能够从firebase中获取一些照片,将它们放在一个url字符串数组中。然后我想在视图控制器的背景上放一张照片。然后,当我按下按钮时,它会导航到下一个视图控制器并将下一张照片作为背景放在那里,等等。

我知道可能有多种方法可以做到这一点,我想知道什么是最有效的方法?我只是将一个数组放在Global类中并从所有视图控制器访问它吗?或者我只是将数组保留在第一个视图控制器中,然后在我导航时,一遍又一遍地将它发送到下一个视图控制器?此外还会有很多物品,物品和阵列,这就是为什么我在寻找效率。提前感谢能够帮助解决这个问题的任何人,我希望我能够解释得很好!

1 个答案:

答案 0 :(得分:2)

这是一种从String添加和检索struct值的非常简单的方法,在这里您将图像url字符串保存为字典中的值,它的关键是{ {1}}姓名。

ViewController

保存值非常简单,如果您要将数据保存在struct SavedData { static private var imagesDictionary: [String: String] = [:] static func image(for viewController: UIViewController) -> String? { return imagesDictionary["\(type(of: viewController))"] } static func add(image name: String, for viewController: UIViewController) { self.imagesDictionary["\(type(of: viewController))"] = name } } 中,并且希望为viewController保存特定图像,则可以使用自己

viewController

如果您想为其他SavedData.add(image: "img1.png", for: self) 保存图片,请按照这样做。

viewController

检索图像也非常简单,您应该在要分配图像的SavedData.add(image: "img2.png", for: SecondViewController()) 中调用此方法。

viewController