2016-11-18 22 views
0

私は自分のデバイスに画像を保存して、次のView Controllerに渡してプレビューすることができます。私が人々がこれをやっているのを見る方法は、彼らが撮ったイメージをuiimageに保存することです。その後、prepareforsegueの間、それらは、デスティネーションビューコントローラ内のuiimage変数を、以前のビューコントローラで取った写真に設定します。そこからdest viewのコントローラーから、次のように画像を表示する人が表示されます:imageName.image = imageVariable。変数をデスティネーションビューコントローラに渡し、次のビューコントローラに表示しようとすると、ゼロ値として表示されます。どこが間違っていますか?画像を撮って別のUIViewController Swift 3.0に渡す

初のViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "ToDetailPage" { 
     let nextScene = segue.destination as! PostDetailPageViewController 
     nextScene.itemImage = self.image 
     // nextScene?.myimg.image = self.image 
    } 
} 

@IBAction func TakePhotoButtonClicked(_ sender: AnyObject) { 

    if let videoConnection = sessionOutput.connection(withMediaType: AVMediaTypeVideo){ 

     sessionOutput.captureStillImageAsynchronously(from: videoConnection, completionHandler: { 
     buffer, error in 
      let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer) 
      self.image = UIImage(data: imageData!) 
      UIImageWriteToSavedPhotosAlbum(UIImage(data: imageData!)!, nil, nil, nil) 
     }) 

    } 


} 

第二のViewController:

var itemImage: UIImage! 
@IBOutlet weak var myimg: UIImageView! 

override func viewDidLoad() { 

    super.viewDidLoad() 
    self.categories.dataSource = self; 
    self.categories.delegate = self; 
    setUpMap() 
    myimg.image = itemImage 

} 
+0

'prepare(for segue:)'に 'self.image'はありませんか? – Ryan

+0

@ Ryan ok yeaそれはなぜその価値がないのかを説明するでしょう。 prepareforsegueのそのnil!任意のアイデアなぜtakephotobuttonclickedメソッドで画像を格納していないのですか? –

+0

'sessionOutput.captureStillImageAsynchronously'ブロックはどうですか?何かエラーがありましたか?ブロック内の 'self.image'は非nilですか? – Ryan

答えて

1

あなたはブロック内のViewControllerをプッシュする必要があります。実際にこのコードで何が起こっているのかは、prepareForSegueの後に完了ブロックが呼び出されることです。あなたのイメージは常に「無」です。

はこのようにViewControllerををプッシュしよう:

if let videoConnection = sessionOutput.connection(withMediaType: AVMediaTypeVideo){ 


sessionOutput.captureStillImageAsynchronously(from: videoConnection, completionHandler: { 
     buffer, error in 
      let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer) 
      self.image = UIImage(data: imageData!) 
      UIImageWriteToSavedPhotosAlbum(UIImage(data: imageData!)!, nil, nil, nil) 
// push view controller here 
let destinationVC = SecondViewController() 
destinationVC.image = self.image 
self.navigationController.pushViewController(destinationVC, animated: true) 
     }) 
} 

は、それがコーディングハッピー..あなたを助けることを願っています!

+0

ありがとう@iプログラマー!私はdestinationVCで無価値なので、私のコードにいくつかの変更を加えなければなりませんでしたが、動作します!私はあなたの時間を感謝します。 –

関連する問題