拍摄照片时,它甚至没有显示,但是正在保存并显示在其他viewController中。
通过拍摄按钮执行的操作可以很好地执行所有操作,但是在通过以下代码拍摄的照片之后不会显示。
第一次填写表格并尝试拍照时,我填写的剩余数据将为空。
为此做什么?
var imagePicker: UIImagePickerController!
@IBAction func takePhotoAction(_ sender: UIButton) {
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .camera
}
//Camera to save image and display later
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
imagePicker.dismiss(animated: true, completion: nil)
if let pickerImage = info[UIImagePickerController.InfoKey.originalImage] {
showImage.image = pickerImage as! UIImage
}
所以基本上这是iOS中的正常行为。您的数据不会保留在已初始化的视图控制器中。
为什么视图控制器未初始化?
视图控制器由于从导航堆栈中弹出而被取消初始化。在您的情况下,这意味着您在视图控制器B上并输入一些数据,然后导航回到视图控制器A(因此,您正在从导航堆栈中弹出视图控制器B)。从导航堆栈中弹出视图控制器时,将没有引用它,因此,您将丢失所有视图控制器数据。
如何解决此问题?
您可以先保存所有输入的数据,然后再查看具有数据耗用量的视图(保存方式和保存位置由您决定)。然后,下次您导航回到该视图时,请显示已保存的数据(如果存在)。