为什么我收到错误“致命错误:在解包可选值时发现nil”?

时间:2016-02-07 16:27:27

标签: ios swift uiimageview segue modalviewcontroller

目前我有4个小图像视图,用于显示从相机拍摄的图像。当我点击其中一个图像时,我希望它带我到一个单独的模态视图控制器,屏幕填充整个VC。下面的代码显示我已将4个无文字按钮附加到我的较小的imageViews,点击后我希望带我到我设置的单独的模态视图控制器。

imageView5是我在模态VC上设置的imageView,“bigImager”是segue标识符。

如果您有任何想法,请告诉我?

@IBAction func bigImage1(sender: AnyObject) {
    if imageView1.image != nil {

    print(sender.tag)
    }
}

@IBAction func bigImage2(sender: AnyObject) {
    if imageView2.image != nil {

   self.performSegueWithIdentifier("bigImager", sender: self)
    }
}

@IBAction func bigImage3(sender: AnyObject) {
    if imageView3.image != nil {

    self.performSegueWithIdentifier("bigImager", sender: self)
    }
}

@IBAction func bigImage4(sender: AnyObject) {
    if imageView4.image != nil {

   self.performSegueWithIdentifier("bigImager", sender: self)
    }
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "bigImager" {
       let dvc: ImageViewController = segue.destinationViewController as! ImageViewController
        dvc.imageView5.image = imageViewArray[sender!.tag].image

    }
}

3 个答案:

答案 0 :(得分:0)

检查prepareForSegue上的发件人是否为nil

答案 1 :(得分:0)

imageView5是一个隐式解包的可选项吗?如果是这样,它可能尚未创建。

我建议将var image: UIImage?属性添加到ImageViewController。然后你可以这样设置:

if let dvc = segue.destinationViewController as? ImageViewController {
    dvc.image = imageViewArray[sender!.tag].image
}

ImageViewController内,您可以在适当的时间设置图像。一种方法是使用didSet

class ImageViewController: UIViewController {
    var image: UIImage? {
        didSet {
            updateViews()
        }
    }

    var imageView5: UIImageView! {
        didSet {
            updateViews()
        }
    }

    func updateViews() {
        if imageView5 != nil {
            imageView5.image = image
        }
    }
}

答案 2 :(得分:0)

显然我没有看到你为imageViewArray设置值的任何地方,请确保正确设置此数组。