将图像从弹出窗口发送到父视图

sending image from popover to parent view

我有一个视图将另一个视图控制器作为弹出窗口打开

弹出窗口使用图像选择器并在 imageView 中显示所选图像。 父级也有一个 imageView,带有一个名为 profiler 的 IBoutlet,在关闭弹出窗口之前,我希望父级视图获得所选图像。

我将如何访问父视图并将图像从弹出窗口发送到父视图

下面是来自弹出视图控制器的代码:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        picker.delegate = self



    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }





    //MARK: - Delegates
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
    {
        let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage //2
        myImageView.contentMode = .scaleAspectFit //3
        myImageView.image = chosenImage //4


        myImageView.layer.borderWidth = 1
        myImageView.layer.masksToBounds = false
        myImageView.layer.borderColor = UIColor.black.cgColor
        myImageView.layer.cornerRadius = myImageView.frame.height/4
        myImageView.clipsToBounds = true



        dismiss(animated:true, completion: nil) //5
    }

感谢您提供的任何帮助

你应该创建协议

protocol PopOverImagePickerDelegate: NSObjectProtocol {
    func didSelect(image: UIImage)
}

在您的 PopoverViewController 中创建

weak var delegate: PopOverImagePickerDelegate?

在从 ParentViewController 导航到 PopoverViewController 之前设置

popOverViewController.delegate = self

然后创建

extension ParentViewController: PopOverImagePickerDelegate {
    func didSelect(image: UIImage) {
        //do stuff
    }
}

当在 PopoverViewController 中选取图像时,只需调用

self.delegate?.didSelect(image: image)

使用回调闭包,比delegate/protocol

省力
  • 在弹出视图控制器中添加一个属性

    weak var callback : ((UIImage) -> ())?
    
  • didFinishPickingMediaWithInfo之前dismiss

    调用
    callback?(chosenImage)
    
  • 在创建控制器后的父视图控制器中添加

    popoverViewController.callback = { image in
        // do something with the image
    }
    

popoverViewController 是弹出视图控制器实例