ThirdViewController

я есть 3 класса:

ChatLogControollerGetImageFromLibraty (класс NSObject)ImagePreviewViewController

Я хочу нажать клип с первого VC, а затем открыть медиа-библиотеку, чтобы выбрать изображение. Затем выбранное изображение передается третьему VC в качестве превью-контроллера. Затем, если я выберу «готово», я хочу передать его в первый ВК.

1-й ВК

class ChatLogControoller: UICollectionViewController, UICollectionViewDelegateFlowLayout, NSFetchedResultsControllerDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, DataSentDelegate {

func recievePhoto(data: UIImage) {
    imageFromView = data
    print("-------\(imageFromView = data)")
}

override func viewDidLoad() {
    super.viewDidLoad()

    let vc = ImagePreviewController()
    self.vc.delegate = self
}

2-й класс - это просто сборщик изображений, так что я передаю изображение в 3-й ВК, и это изображение успешно отображается на изображении 3-го ВЦ!

мой третий вк

protocol DataSentDelegate {
    func recievePhoto(data: UIImage)
}
class PreviewController: UIViewController, UIScrollViewDelegate {

var delegate : DataSentDelegate? = nil

var aImageView: UIImageView!
var aImage: UIImage!

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action:, #selector(actionSend))
    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(actionBack))

}

@objc func actionBack() {

    dismiss(animated: false, completion: nil)
}

@objc func actionSend() {

    let data = aImageView.image
    delegate?.recievePhoto(data: data!)
    dismiss(animated: true, completion: nil)
}