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

好吧,我想我必須這樣做,但用某種循環或某種方式,爲每個視圖控制器從數組中獲取下一個值。我認爲它應該工作 –

相關問題