0

UIImagePickerControllerからキャプチャされた画像を別のViewControllerに渡そうとしていますが、画像が渡されません。二ViewControllerためUIImageがViewControllerから他のViewControllerに渡されない

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    newImageView.contentMode = .scaleAspectFit 
    newImageView.image = chosenImage 

    self.performSegue(withIdentifier: "pass", sender: self) 

    dismiss(animated:true, completion: nil) 

    let svc = self.storyboard!.instantiateViewController(withIdentifier: "demoViewController") as! demoViewController 
    present(svc, animated: true, completion: nil) 

} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "pass" 
    { 
     let imgpass = segue.destination as! demoViewController 
     imgpass.newphoto = chosenImage 
    } 
} 

コード::私は他の同様の投稿の多くを経て、あまりにもそれらを実装したができなかった

override func viewDidLoad() { 
    super.viewDidLoad() 

    myImageView.image = newphoto 
} 

この

は最初 ViewControllerのコードです渡されたイメージを取得します。

+0

この行にブレークポイントを追加して、newphoto myImageView.image = newphotoの値を確認できますか? –

+0

あなたのimagePickerController * func *:なぜあなたは 'performSegue'と' present'をやっていますか?あなたはそのうちの1つだけを行うべきです。一度に2人のviewcontrollerに行くことはできません。 – Honey

答えて

1

は、問題があなたのfunc prepare(for:sender:)実装が呼び出されないということですので、あなたのnewphotoが設定されることはありません。この

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
    { 
     if let chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 

     newImageView.contentMode = .scaleAspectFit 
     newImageView.image = chosenImage 

     picker.dismiss(animated: true, completion: nil) 

     let svc = self.storyboard!.instantiateViewController(withIdentifier: "demoViewController") as! demoViewController 
     svc.newphoto = chosenImage 
     self.present(svc, animated: true, completion: nil) 
    } 
} 
+2

いいですが、あなたは_explain_するべきです。 – matt

+0

エラー '未解決の識別子'の使用 'imgpass' ' –

+0

@ Alvinありがとう。出来た。 –

1

を試してみてください。 prepare(for:sender:)がセグの前に送信されます。しかし、セグーはありません。コードにを提示していますが、セグはありません。

+0

また、 'dismiss'の後に' present'をしてはいけません。 'dismiss'の完了ハンドラ_の中で' present'を実行します。 – matt

+0

"svc.imgpass = selectedImage"を使用するとエラーが発生します "型の値 'demoViewController'にはメンバー 'imgpass'がありません" –

+0

ああ、どういう意味ですか?あなた自身で考えてください。私たちにあなたの靴を結ばせないでください。 – matt

関連する問題