在点击我的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中的图像数组.
发布于 2020-05-08 07:52:41
以下是您如何进行:
VC1与ImageAssetsProtocol相结合,并实现了它的sendImageAssets(myData:)方法。类VC1: UIViewController,ImageAssetsProtocol { func openVC2() { let vc2 =vc2 "VC3") as!VC3 vc2.委托= self } func sendImageAssets(myData: MyImageAsset) { print(myData) }
VC2创建一个ImageAssetsProtocol?类型的delegate,并在呈现VC1 VC2时设置vc2.delegate = self类VC2: UIViewController { var委托: ImageAssetsProtocol?函数openVC3() { let vc3 =vc3 "VC3")!VC3 vc3.agent= self.delegate }
VC3创建一个ImageAssetsProtocol?类型的delegate,并在表示VC2 VC3时设置vc3.delegate = self。在sendImageAssets(myData:)中调用委托方法viewWillDisappear(_:)。类VC3: UIViewController {弱var委托: ImageAssetsProtocol?覆盖func viewWillDisappear(_动画: Bool) { self.delegate?.sendImageAssets(myData: selectedAssets) }
https://stackoverflow.com/questions/61674386
复制相似问题