我一直在玩很多涉及数组和滚动视图的东西。我大部分都呆在视图控制器的范围内,所以通常我会从firebase中获取数据,将其添加到数组中,然后将其发送到tableview或collectionview。我现在要做的是实际在viewcontrollers(或同一视图控制器的多个副本)之间导航,并将数组项应用于每个视图控制器。
例如,我希望能够从firebase中获取一些照片,将它们放在一个url字符串数组中。然后我想在视图控制器的背景上放一张照片。然后,当我按下按钮时,它会导航到下一个视图控制器并将下一张照片作为背景放在那里,等等。
我知道可能有多种方法可以做到这一点,我想知道什么是最有效的方法?我只是将一个数组放在Global类中并从所有视图控制器访问它吗?或者我只是将数组保留在第一个视图控制器中,然后在我导航时,一遍又一遍地将它发送到下一个视图控制器?此外还会有很多物品,物品和阵列,这就是为什么我在寻找效率。提前感谢能够帮助解决这个问题的任何人,我希望我能够解释得很好!
答案 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