我遇到了一个错误:
Thread 1:EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP,subcode=0x0)
当我试图将从照片库选择的图像传递给另一个视图控制器时出现了这个错误。
源视图控制器 -
@IBAction func myButtonTapped(_ sender: UIButton)
{
let secondVC = storyboard?.instantiateViewController(withIdentifier: "secondVC") as! secondVC
secondVC.passedVName = VNameTextField.text!
secondVC.passedCcName = DropTextBox.text!
secondVC.passedVImage = VImageView.image!
navigationController?.pushViewController(secondVC, animated: true)
}
目标 ViewController -
class secondVC: UIViewController
{
@IBOutlet weak var DisplayPassedImage: UIImageView!
@IBOutlet weak var ccNameDisplayLabel: UILabel!
@IBOutlet weak var VNameDisplayLabel: UILabel!
var passedVName = ""
var passedCcName = ""
var passedVImage = UIImage()
override func viewDidLoad()
{
super.viewDidLoad()
VNameDisplayLabel.text = passedVName
ccNameDisplayLabel.text = passedCcName
DisplayPassedImage.image = passedVImage // Error- Thread 1:EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP,subcode=0x0)
}
}
注意: 'PassedVName'和'passedCcName'数据已成功传递到目标ViewController。如果我尝试传递'passedVImage',就会出现错误。
UIImageView
上的image
属性是可选的,因此您可以使passedVImage
变量也是可选的,例如var passedVImage: UIImage?
,这将使您的代码更安全,并减轻在源视图控制器中传递值时需要执行VImageView.image!
的需求。这可以帮助解决问题,您可以更轻松地观察传递的图像是否为nil
。不幸的是,您仍然无法在storyboard中使用初始化程序注入,这往往会使您陷入不安全的境地。 - cjrieck