【问题标题】:How to assign a picture to the UIImageView (Swift 3)如何将图片分配给 UIImageView (Swift 3)
【发布时间】:2016-12-09 16:14:48
【问题描述】:

我正在尝试将图片库中的图像添加到新的 ViewController,但出现错误

创建一个未知类型的图像格式是一个错误致命错误:unwrapping an Optional value 时意外发现 nil

代码:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if let im = info[UIImagePickerControllerOriginalImage] as? UIImage {
            let vc = self.storyboard?.instantiateViewController(withIdentifier: "editImage") as! EditImageViewController
            vc.imageView.image = im
            self.present(vc, animated: true, completion: nil)
        } else {
            print("Something went wrong")
    }
    imagePicker.dismiss(animated: true, completion: nil)
}

我的错误是什么?

【问题讨论】:

    标签: ios swift xcode


    【解决方案1】:

    您的EditImageViewController.imageView为零。 要从外部传递图像,您需要将 UIImage 属性添加到EditImageViewController

    要将图像分配给UIImageView,请使用viewDidLoad()

    类似这样的:

    class EditImageViewController: UIViewController {
    
        @IBOutlet weak var imageView: UIImageView!
        var imageToAdd: UIImage?
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.imageView.image = imageToAdd
        }
    }
    

    要将图像传递给新控制器,只需设置imageToAdd,因此vc.imageView.image = im 变为vc.imageToAdd = im

    【讨论】:

    • 为了扩展这个答案,一般来说,任何外部代码都不应该直接访问视图控制器的视图。外部代码应该只向视图控制器提供信息/数据。让视图控制器负责根据数据更新自己的视图。这是 MVC 设计背后的要点之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多