如何将图片分配给 UIImageView (Swift 3)

Posted

技术标签:

【中文标题】如何将图片分配给 UIImageView (Swift 3)【英文标题】:How to assign a picture to the 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)

我的错误是什么?

【问题讨论】:

【参考方案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 设计背后的要点之一。

以上是关于如何将图片分配给 UIImageView (Swift 3)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 将新图像分配给 UIImageView

将图像分配给 UIImageView

通过循环将 TouchUpInside 事件分配给多个 UIImageView,并使用可以进一步动画/操作每个 UIImageView 的处理程序方法

iOS给UIImageView添加圆角的三种方法

将 SWI-Prolog 连接到 C++ 的问题

如何将 wmf 文件动态分配给图片框