将imageView传递给下一个活动,是否需要插座

时间:2015-05-21 03:46:22

标签: ios swift cocoa-touch

我有一个小问题,每当我删除下图所示的Outlet(imageChosen)时(带黄色警告),当应该通过的图像时应用程序崩溃 enter image description here

这里我是如何定义它的

 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
        }
    }

当我删除图片中的插座时,应用程序崩溃,因为图像为零,即使代码似乎没问题, 任何人都可以帮助我

2 个答案:

答案 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
                }
             }
        }
    }

我做得非常冗长,以便更容易理解