【问题标题】:Pass Captured/Gallery Image from one ViewController to another将捕获/图库图像从一个 ViewController 传递到另一个
【发布时间】:2019-05-14 16:56:41
【问题描述】:

我想捕捉一张照片或从图库中挑选它,然后将它在 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 中。有没有办法像全局一样使用它。

【问题讨论】:

    标签: swift uiviewcontroller uiimage segue


    【解决方案1】:

    在 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
            }
        }
    }
    

    【讨论】:

    • 像魅力一样工作。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    相关资源
    最近更新 更多