我一直有致命的错误:在我完成选择图片的时候意外地找到了nil,只要我完成了选择图片
编辑版 图像的价值在那里
UPDATE2
答案 0 :(得分:2)
首先将图像视图添加到视图控制器,然后您将看到输出。目前您无法看到输出,因为您没有将此图片视图添加到视图中。所以请做
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
imagePicked = UIImageView()
imagePicked.frame = CGRectMake(100, 100, 100, 100)
self.view.addSubview(imagePicked);
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
picker.dismissViewControllerAnimated(true, completion: nil)
imagePicked!.image = image
}
这种情况正在发生,因为您在没有分配imagePicked的情况下分配图像。
希望它会对你有所帮助。
答案 1 :(得分:0)
您遇到的第一个错误是因为您的imagePicked
未初始化,而您正在为其分配图像。
解决这个问题的方法就是初始化它。在viewdidLoad
或
imagePickerController(_:didFinishPickingMediaWithInfo:)
imagePicked = UIImageView(image: image)
请记住使用以下代码
关闭imagePickerpicker.dismissViewControllerAnimated(true, completion: nil)
要使图像可见,请将案例imagePicked
中的图像视图添加到视图中。为此,请在关闭imagePicker
imagePicked.frame = CGRectMake(0, 0, 100, 100) // Use values that you need
self.view.addSubview(imagePicked)
您
imagePickerController(_:didFinishPickingMediaWithInfo:)
应该看起来像这样
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
picker.dismissViewControllerAnimated(true, completion: nil)
imagePicked = UIImageView(image: info[UIImagePickerControllerOriginalImage] as! UIImage)
imagePicked.frame = CGRectMake(0, 0, 100, 100) // whatever frame you want
self.view .addSubview(imagePicked)
}
注意:强>
- imagePickerController:didFinishPickingImage:editingInfo:
已弃用
答案 2 :(得分:0)
imagePicked是零。您将其声明在顶部(var imagePicked : UIImageView!
)。感叹说:“嘿,这不会是零,我保证。”所以你沉默所有编译警告和错误,但是......你永远不会实例化它,所以你打破了承诺。
完成了使用信息完成图片的选择:
if imagePicked == nil {
//init and configure your imageView
imagePicked = UIImageView(...)
}
//you can safely use it here...
在顶部更改!至 ?
注意:init应该在任何人访问它之前在某个地方完成。也许在viewDidLoad ......