获取以下错误消息
"致命错误:在解开可选值时出乎意料地发现了零"
在这部分所有图像都没有问题。
(segue.destination as! DetailViewController).imgView.image = UIImage(named: "horsestar.png")!
以下代码是整个准备功能
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "dog" {
let imgView = UIImageView(image: UIImage(named: "dogstar.png")!)
print("dog")
(segue.destination as! DetailViewController).scrollView.addSubview(imgView)
} else if segue.identifier == "horse" {
print("horse")
(segue.destination as! DetailViewController).imgView.image = UIImage(named: "horsestar.png")!
(segue.destination as! DetailViewController).scrollView.addSubview((segue.destination as! DetailViewController).imgView)
} else if segue.identifier == "bear" {
let imageView = UIImageView(image: UIImage(named: "bear.png")!)
print("bear")
} else if segue.identifier == "eagle" {
let imageView = UIImageView(image: UIImage(named: "eagle.png")!)
print("eagle")
} else {
let imageView = UIImageView(image: UIImage(named: "rabbit.png")!)
print("rabbit")
}
}
请小心效力 - 工艺(!),因为它会在运行时传播很多错误。如果您不希望代码中的nil
值,则用户guard let
。
在您的代码中:
(segue.destination as! DetailViewController).imgView.image = UIImage(named: "horsestar.png")!
您有两个危险的地方:
- 将
segue.destination
铸造为DetailViewController
。如果是不可能的,请扔"fatal error: unexpectedly found nil while unwrapping an Optional value"
- 加载图像,名称为" Horsestar.png"。如果未建立图像,请扔
"fatal error: unexpectedly found nil while unwrapping an Optional value"
最好使用guard let
(或if let
):
guard let destinationViewController = segue.destination as? DetailViewController else {
print("unable to get destinationViewController")
return
}
guard let image = UIImage(named: "horsestar.png") else {
print("unable to load image")
return
}
destinationViewController.imgView.image = image
在else if
条件下更改您的代码
else if segue.identifier == "horse" {
if let toViewController = segue.destination as? DetailViewController {
toViewController.imgView.image = UIImage(named: "horsestar.png")
/// your other stuff
}
}
仍然不知道您想要什么?
(segue.destination as! DetailViewController).scrollView.addSubview((segue.destination as! DetailViewController).imgView)