如何在多个视图控制器上使用数组?
我一直在玩很多涉及数组和滚动视图的东西。我大部分时间都呆在视图控制器的范围内,所以通常我会从firebase中获取数据,将其添加到数组中,然后将其发送到tableview或collectionview。我现在想要做的事情实际上是在视图控制器(或同一个视图控制器的多个副本)之间导航,并将数组项目应用到每个视图控制器。如何在多个视图控制器上使用数组?
例如,我希望能够从firebase中获取一些照片,并将它们放入一个url字符串数组中或其他内容中。然后我想把一张照片放在视图控制器的背景上。然后,当我按下超过按钮它会导航到下一个视图控制器,并把下一张照片作为背景,等等。
我知道有可能有多种方法来做到这一点,我想知道什么是最高效的办法?我只是将一个数组放在Global类中并从所有视图控制器访问它?或者我只是将数组放在第一个视图控制器中,然后在我导航时,一直将它重复发送到下一个视图控制器?此外,这里会有很多项目和对象以及数组,这就是为什么我要寻找效率的原因。在此先感谢任何能够提供帮助的人,我希望我解释得很好!
这是添加和从struct
检索String
值,这里要保存的图像的URL字符串在字典中值的非常简单的方法,它的关键是要成为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
此方法。
let savedImage = SavedData.image(for: self)
print(savedImage!)
好吧,我想我必须这样做,但用某种循环或某种方式,为每个视图控制器从数组中获取下一个值。我认为它应该工作 –
[查看控制器之间传递数据]的可能的复制(http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Kekoa
我已经知道如何从一个VC传递数据到另一个。见第3段。我想要最有效的方式,并且数据已经可以在那里访问。这有一个原因,但它不相关,所以我没有提到它。 –