0

私は配列やscrollviewsを含む多くのもので周りを遊んできました。私は主にView Controllerの範囲内にとどまっていましたので、通常はfirebaseからデータを取得して配列に追加し、それをtableviewまたはcollectionviewに送ります。私が今しようとしているのは、実際にはViewController(または同じView Controllerの複数のコピー)間を移動し、各View Controllerに配列項目を適用することです。複数のView Controllerでアレイを使用するにはどうすればよいですか?

たとえば、firebaseからいくつかの写真を取得し、それらをURL文字列の配列などに入れたいと思っています。次に、ビューコントローラーの背景に写真を貼りたいと思います。次に、上のボタンを押すと、次のビューコントローラーに移動し、そこに背景として次の写真が置かれます。

おそらくこれを行う方法は複数あると思いますが、最も効率的です方法?私は、グローバルクラスに配列を配置し、すべてのビューコントローラからその配列にアクセスしますか?または、最初のビューコントローラに配列を保持して、次にナビゲートして、次のビューコントローラに繰り返し送信し続けますか?また、ここに多くのアイテムやオブジェクトや配列が存在するので、効率を求めています。これを手伝うことができる誰もが前もってありがとう、私はそれを十分に説明して欲しい!

+0

[ビューコントローラ間でデータを受け渡す]の可能複製(http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers)私はすでに1つのVCからのデータを渡す方法を知っていた – Kekoa

+0

別のものに。第3段落を参照してください。私は最も効率的な方法を望んでおり、データはすでにそこにアクセス可能です。これには理由がありますが、関連性がないので言及しませんでした。 –

答えて

2

これは、ここにあなたが辞書の値として画像のURL文字列を保存しているし、鍵がViewController名前になるだろうだ、structからString値を追加して検索するのは非常に簡単な方法です。あなたはviewControllerにデータを保存しているし、あなたが

SavedData.add(image: "img1.png", for: self) 

そして、あなたならば、自己を使用することができ、特定の画像は、その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の画像を保存したい場合は、このようにしてください。

SavedData.add(image: "img2.png", for: SecondViewController()) 

画像を取得することも非常に簡単です、あなたがにイメージを割り当てたいviewControllerでこのメソッドを呼び出す必要があります。

let savedImage = SavedData.image(for: self) 
print(savedImage!) 
+0

私はこれを行う必要があると思うが、いくつかの種類のループまたは何かで、各ビューコントローラの配列から次の値を取得する必要があります。私はそれがうまくいくと思う –

関連する問題