无法使用委托获取数组

Not able to get array using delegate

点击我的 viewcontrollerA 中的按钮,我将前往 viewcontrollerB。从 viewcontrollerB 我去 viewcontrollerC。我在 viewcontrollerC 中的图像数组我想带回 viewcontrollerA

这就是我尝试与代表一起实现它的方式...

class ViewControllerA: UIViewController,ImageAssetsProtocol {

        override func viewWillAppear(_ animated: Bool) {
            var vc = ViewControllerC()
            vc.delegate = self

        }

     //This below method doesn’t get called
     func sendImageAssets(myData: [MyImageAsset]) {
           print(myData)
       }

}
------------------------------------------------------------------------------------------

class ViewControllerC: UIViewController {

protocol ImageAssetsProtocol {
    func sendImageAssets(myData: [MyImageAsset])
}
 weak var imagePreviewDelegate: ImagePreviewDelegate?



//ViewControllerC gets an array of images from ViewcontrollerB. I’m passing that array to ViewControllerA

  override func viewWillDisappear(_ animated: Bool) {

        self.delegate?.sendImageAssets(myData: selectedAssets)
    }

}

但是在这样做之后,我没有在 ViewControllerA 中获取图像数组...

以下是您可以继续的方法:

  1. 使VC1符合ImageAssetsProtocol并实现其sendImageAssets(myData:)方法。

    class VC1: UIViewController, ImageAssetsProtocol {
        func openVC2() {
            let vc2 = self.storyboard?.instantiateViewController(withIdentifier: "VC3") as! VC3
            vc2.delegate = self
        }
    
        func sendImageAssets(myData: [MyImageAsset]) {
            print(myData)
        }
    }
    
  2. VC2 中创建一个 ImageAssetsProtocol? 类型的 delegate 并设置 vc2.delegate = self 同时从 VC1 呈现 VC2

    class VC2: UIViewController {
        var delegate: ImageAssetsProtocol?
    
        func openVC3() {
            let vc3 = self.storyboard?.instantiateViewController(withIdentifier: "VC3") as! VC3
            vc3.delegate = self.delegate
        }
    }
    
  3. VC3 中创建一个 ImageAssetsProtocol? 类型的 delegate 并设置 vc3.delegate = self 同时从 VC2 呈现 VC3 .在viewWillDisappear(_:).

    中调用委托方法sendImageAssets(myData:)
    class VC3: UIViewController {
        weak var delegate: ImageAssetsProtocol?
    
        override func viewWillDisappear(_ animated: Bool) {
            self.delegate?.sendImageAssets(myData: selectedAssets)
        }
    }