2017-10-30 5 views
0

私は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 
     } 

    } 
+0

たとえば、ディスクに写真を保存し、アプリが開くたびに写真を撮って戻します。 – kirander

+0

これ以上の説明がなければ、これは私にはビューとビューコントローラのライフサイクルの問題と聞こえます。 'viewWillAppear'で画像を更新しようとしましたか? – dfd

+0

@dfd私は試してみましたが、うまくいきません。 –

答えて

-1

FirstviewController viewDidLoadロジックを更新:

if image == nil { 
    imageView.image = UIImage(named: ("defaultPhoto")) 
} else { 
    imageView.image = image 
} 
+0

私はこの回答に投票したくありません。 OPは*写真をキャプチャし、最初のViewController ...に戻します*明らかに**はviewDidLoadで発生しません。 (2番目の考えでは、私は投票を辞退していますが、これは問題の詳細*にどのように答えていますか?) – dfd

+0

@dfd、PreviewViewControllerのprepareForSegue関数を見てください。 OPが必要な画像をFirstViewController "destinationVC.image = self.image"の画像変数に渡すことがわかります。したがって、OPが "presentModaly" segueを使用する場合、私の答えはうまくいくでしょう。このコードでは、viewWillAppear funcを取り込むだけで、OPがviewDidLoadで使用するコードは取得できません。 – Dmitry

関連する問題