Ну, здесь вам нужен простой протокол делегата для передачи данных из одного ViewController
в другой ViewController
.
Ниже приведены инструкции по работе с протоколом.
В ViewController2
или fullImaageViewController
выполните следующие действия.
Чуть выше объявления вашего класса объявите вашего делегата.
protocol MyDelegate:class { // declare your protocol a class protocol
func sendDataBack(value: Photo)
}
В class
объявите variable
вашего delegate
weak var myDelegateObj: MyDelegate? // always declare a weak delegate so that it cannot capture the memory of the object
и когда вы dismiss the VC
просто вызываете делегата со строкой
myDelegateObj?.sendDataBack(value: Photo)
Теперь перейдите к вашему FirstViewController
и перейдите к строке, где вы объявили FirstViewController Obj
, если не объявите его либо в viewdidload
, либо когда вы presenting
видите.
и сделайте следующее.
let vc = FirstViewController()
vc.myDelegateObj = self
и реализуйте метод вашего делегата в FirstViewController
В FirstViewController:
make your firstView conform to MyDelegate Protocol by doing:
class FirstViewController: UIViewController,MyDelegate
и реализовать метод MyDelegate
// update only altered photo
func sendDataBack(value: Photo) {
if let index = photosList.index(where: {$0.imageID == Photo.imageID}){
PhotoList[index] = Photo
}
}
А потом, перед начальным переходом, я использую
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "photofull" {
if let fullImaageViewController = segue.destination as? ViewController2 {
fullImaageViewController.myDelegateObj = self
}
}
}
Надеюсь, это поможет.