如何将图片分配给 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)的主要内容,如果未能解决你的问题,请参考以下文章
通过循环将 TouchUpInside 事件分配给多个 UIImageView,并使用可以进一步动画/操作每个 UIImageView 的处理程序方法