簡體   English   中英

為什么會出現錯誤“致命錯誤:解開可選值時發現nil”?

[英]Why am I getting the error “fatal error: found nil while unwrapping optional value”?

目前,我有4個小imageViews,它們顯示從相機拍攝的圖像。 當我單擊這些圖像之一時,我希望它帶我到一個單獨的模式視圖控制器,其中屏幕充滿整個VC。 下面的代碼顯示我在較小的imageViews上附加了4個無文本按鈕,單擊這些按鈕希望將我帶到已設置的單獨的模式視圖控制器。

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

    }
}

檢查prepareForSegue的發送者是否為nil

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

顯然我看不到您為imageViewArray設置值的任何地方,請確保正確設置此數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM