0

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

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

我知道有可能有多种方法来做到这一点,我想知道什么是最高效的办法?我只是将一个数组放在Global类中并从所有视图控制器访问它?或者我只是将数组放在第一个视图控制器中,然后在我导航时,一直将它重复发送到下一个视图控制器?此外,这里会有很多项目和对象以及数组,这就是为什么我要寻找效率的原因。在此先感谢任何能够提供帮助的人,我希望我解释得很好!

+0

[查看控制器之间传递数据]的可能的复制(http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Kekoa

+0

我已经知道如何从一个VC传递数据到另一个。见第3段。我想要最有效的方式,并且数据已经可以在那里访问。这有一个原因,但它不相关,所以我没有提到它。 –

回答

2

这是添加和从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!) 
+0

好吧,我想我必须这样做,但用某种循环或某种方式,为每个视图控制器从数组中获取下一个值。我认为它应该工作 –

相关问题