无法使用委托获取数组
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 中获取图像数组...
以下是您可以继续的方法:
使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)
}
}
在 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
}
}
在 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)
}
}
点击我的 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 中获取图像数组...
以下是您可以继续的方法:
使
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) } }
在
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 } }
在
中调用委托方法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) } }