将imageView传递给下一个activity,是否需要outlet

passing the imageView to the next activity, does it require an outlet

我有一个小问题,每当我删除下图中显示的 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)

    }

这是我将图像传递给下一个的地方 activity

 override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
        if segue.identifier == "next" {
            var pass:postView = segue.destinationViewController as! postView
            pass.currentImage = imageChosen.image
        }
    }

当我删除图片中的插座时,应用程序崩溃,因为图像为零,即使代码似乎没问题, 谁能帮帮我

您还需要从 ViewController(swift 文件)中删除插座,您在图片中看到插座的地方 post 单击 (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)

    }

这是我将图像传递给下一个的地方activity

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

为了便于理解,我写得非常冗长

您一直收到错误的原因是因为您在分配图像时没有分配您的 imageChosen。

解决方案

   override func viewDidLoad() {
        super.viewDidLoad()
        picker.delegate = self
        // Add this line
        imageChosen = UIImageView()

    }

在你声明 imageChosen = UIImageView() 之后,它会解决你的问题

希望对您有所帮助!