【发布时间】:2018-12-19 06:03:25
【问题描述】:
我有 3 个课程:
- 聊天记录控制器
- GetImageFromLibraty(NSObject 类)
- ImagePreviewViewController
我想从第一个 VC 中按下一个剪辑,然后打开媒体库来选择一个图像。然后将选中的图像作为 previewController 传递给第三个 VC。然后,如果我选择“完成”,我想将其传递给第一个 VC。
第一个 VC
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
}
第二类它只是图像的选择器,所以我将图像传递给第三个 VC,这个图像成功出现在第三个 VC 的 imageView 上!
我的第三个 VC
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)
}
【问题讨论】:
-
你遇到了什么问题?
-
@V_rohit 我在将数据从第三个 VC 传递到第一个 VC 的代码中错过了什么?
-
在 2 个 VC 中调用委托方法,您从中将照片传递给第 3 个 VC
-
@V_rohit 但在这种情况下我如何将它从第三个 VC 传递给第一个 vc?
-
您在第 3 个 VC 中创建了协议,只需在第 1 个 VC 中调用此协议,使用协议即可将数据传递给第 1 个 VC