2016-12-09 23 views
2

我試圖從畫廊到新的ViewController添加圖像,但得到一個錯誤如何分配圖片的UIImageView的(SWIFT 3)

Creating an image format with an unknown type is an error fatal error: unexpectedly found nil while unwrapping an Optional value

代碼:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     if let im = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      let vc = self.storyboard?.instantiateViewController(withIdentifier: "editImage") as! EditImageViewController 
      vc.imageView.image = im 
      self.present(vc, animated: true, completion: nil) 
     } else { 
      print("Something went wrong") 
    } 
    imagePicker.dismiss(animated: true, completion: nil) 
} 

我的錯誤是什麼?

回答

9

您的EditImageViewController.imageView爲零。 要從外部傳遞圖像,您需要將UIImage屬性添加到EditImageViewController

到該圖像分配給UIImageView,用viewDidLoad()

事情是這樣的:

class EditImageViewController: UIViewController { 

    @IBOutlet weak var imageView: UIImageView! 
    var imageToAdd: UIImage? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.imageView.image = imageToAdd 
    } 
} 

要通過圖像來新的控制器,只需設置imageToAdd,所以vc.imageView.image = im成爲vc.imageToAdd = im

+0

要在此展開一般來說,沒有外部代碼應該直接訪問視圖控制器的視圖。外部代碼應該只向視圖控制器提供信息/數據。讓視圖控制器負責根據數據更新自己的視圖。這是MVC設計背後的要點之一。 – rmaddy

+0

謝謝!有用。 – nik3212