首页 > 解决方案 > 将捕获/图库图像从一个 ViewController 传递到另一个

问题描述

我想捕捉一张照片或从画廊中挑选它,然后将它在 imageView 中传递给另一个 ViewController。我成功制作了续集,但我不知道如何从 imagePickerController 传递图像。

第一个视图控制器

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

        if let selectedImage = info[.originalImage] as? UIImage{
            imagePicker.dismiss(animated: true){
                self.performSegue(withIdentifier: "goToCropScreen", sender: self)
            }

        }

    }

    //Navigation to other screens
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToCropScreen"{
            let destinationVC = segue.destination as! CropViewController
            destinationVC.imageToCrop = //Here is the problem. Idont know what image to use.
        }
    }

第二个视图控制器

class CropViewController: UIViewController {

    @IBOutlet weak var cropImageView: UIImageView!

    var imageToCrop : UIImage?

    override func viewDidLoad() {
        super.viewDidLoad()

        cropImageView.image = imageToCrop

    }


}

我知道我不能使用 selectedImage,因为它在 imagePickerController 中。有没有办法像全球一样使用它。

标签: swiftuiviewcontrolleruiimagesegue

解决方案


在 FirstViewController 中创建一个变量。并将所选图像存储在此变量中并在prepare for segue方法中传递值

class FirstViewController: UIViewController {

    var selectedImage: UIImage?

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

            if let selectedImage = info[.originalImage] as? UIImage{
                imagePicker.dismiss(animated: true){
                    self.selectedImage = selectedImage
                    self.performSegue(withIdentifier: "goToCropScreen", sender: self)
                }

            }

        }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToCropScreen"{
            let destinationVC = segue.destination as! CropViewController
            destinationVC.imageToCrop = self.selectedImage
        }
    }
}

推荐阅读