0

Я играл с большим количеством материалов, связанных с массивами и прокрутками. Я в основном оставался в пределах контрольных точек зрения, поэтому обычно я собираю данные из firebase, добавляю их в массив и отправляю их в tableview или collectionview. То, что я пытаюсь сделать сейчас, - это фактически перемещаться между viewcontrollers (или несколькими копиями одного и того же контроллера представлений) и применять элементы массива к каждому контроллеру представления.Как использовать массив над несколькими контроллерами представлений?

Например, я хочу, чтобы иметь возможность захватить некоторые фотографии из firebase, поместить их в массив строк url ​​или что угодно. Затем я хочу поставить фотографию на фоне контроллера вида. Затем, когда я нажимаю кнопку «over», он переходит к следующему контроллеру представления и помещает следующую фотографию в качестве фона там и т. Д.

Я понимаю, что, возможно, существует несколько способов сделать это, и мне было интересно, что является наиболее эффективным путь? Я просто поместил массив в класс Global и получил доступ ко всем контроллерам представлений? Или я просто держу массив в первом контроллере представления, а затем, когда я перемещаюсь, продолжайте отправлять его на следующий контроллер просмотра снова и снова? Также здесь будет много предметов и объектов и массивов, поэтому я ищу эффективность. Заранее благодарю всех, кто может помочь с этим, и я надеюсь, что я объяснил это достаточно хорошо!

+0

Возможный дубликат [Передача данных между контроллерами View] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Kekoa

+0

я уже знал, как передать данные из одного ВХ другому. См. Третий абзац. Я хочу наиболее эффективный способ, и для данных, которые уже доступны там. Для этого есть причина, но это не имеет значения, поэтому я не упоминал об этом. –

ответ

2

Это очень простой способ добавления и извлечения String значения из struct, здесь вы сохраняете строку 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

Хорошо, я думаю, мне нужно будет сделать это, но с каким-то циклом или чем-то еще, чтобы получить следующее значение из массива для каждого контроллера вида. Я думаю, он должен работать –

Смежные вопросы