我有一个小问题,每当我删除下图所示的Outlet(imageChosen)时(带黄色警告),当应该通过的图像时应用程序崩溃
这里我是如何定义它的
var imageChosen: UIImageView!
这就是我将从图库中选择的图像保存到imageChosen
的方式func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
var chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
imageChosen.contentMode = .ScaleAspectFit
imageChosen.image = chosenImage
dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("next", sender: self)
}
这是我将图片传递给下一个活动的地方
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if segue.identifier == "next" {
var pass:postView = segue.destinationViewController as! postView
pass.currentImage = imageChosen.image
}
}
当我删除图片中的插座时,应用程序崩溃,因为图像为零,即使代码似乎没问题, 任何人都可以帮助我
答案 0 :(得分:1)
您不断收到错误的原因是您在未分配imageChosen的情况下分配图像。
解决方案
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
// Add this line
imageChosen = UIImageView()
}
声明 imageChosen = UIImageView()之后,它将解决您的问题
希望有所帮助!
答案 1 :(得分:0)
您还需要删除ViewController
(swift文件)中的插座,您可以在其中看到您在(x)中点击的图片中的插座,以便从imageChosen删除插座,因为它不存在不再(你可以看到代码中的黄色三角形警告)。
您还应将代码更改为:
var imageChosen: UIImageView?
这就是我将从图库中选择的图像保存到imageChosen
的方式func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
if let image = info[UIImagePickerControllerOriginalImage] as UIImage{
imageChosen.contentMode = .ScaleAspectFit
imageChosen.image = image
}
else
{
//something went wrong
}
dismissViewControllerAnimated(true, completion: nil)
self.performSegueWithIdentifier("next", sender: self)
}
这是我将图片传递给下一个活动的地方
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if segue.identifier == "next" {
if let pass = segue.destinationViewController as postView
{
if let image = imageChosen.image{
pass.currentImage = imageChosen.image
}
}
}
}
我做得非常冗长,以便更容易理解