私は3つのビューコントローラを持っています。第1のものはUIimageview
, 、第2のものはcustomCameraViewController
、第3のものはpreviewController
である。最初のコントローラーでアプリケーションが起動し、ユーザーが写真をキャプチャした後にcustomCameraViewController
に移動するボタンがある場合は、previewController
に渡して写真の保存またはキャンセルを決定します。ユーザーが写真を保存する場合は、セグを使用してuiimage
を返し、最初のコントローラーに表示します。画像ビューに画像が既にあるときに画像を通過させて表示する
問題はuiimageViewがすでに「デフォルトのプロファイル写真」に設定されていることです ユーザーがアプリケーションを開いたときにこの問題を解決する方法を教えてください。それは、 "デフォルトの写真" を表示し、写真をキャプチャし、firstViewControllerに戻ってそれを渡すと、 "撮影した写真"
を表示FirstviewController
var image:UIImage!
override func viewDidLoad() {
super.viewDidLoad()
if imageView.image == nil{
print("nothing")
imageView.image = UIImage(named: ("defaultPhoto"))
}else if imageView.image == UIImage(named: ("defaultPhoto")) && imageView.image != nil{
print("have image")
imageView.removeFromSuperview()
imageView.image = image
}
}
PreviewViewController
class PreviewViewController: UIViewController {
var image: UIImage!
@IBOutlet weak var photoPic: UIImageView!
@IBAction func cancelAction(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
@IBAction func saveAction(_ sender: Any) {
self.performSegue(withIdentifier: "savePicSegue", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "savePicSegue" {
let destinationVC = segue.destination as! FirstViewController
destinationVC.image = self.image
}
}
たとえば、ディスクに写真を保存し、アプリが開くたびに写真を撮って戻します。 – kirander
これ以上の説明がなければ、これは私にはビューとビューコントローラのライフサイクルの問題と聞こえます。 'viewWillAppear'で画像を更新しようとしましたか? – dfd
@dfd私は試してみましたが、うまくいきません。 –