2016-11-20 10 views
0

最初のViewController(AViewController)では、カメラを設定しました。画像がキャプチャされると、私はUIImageViewを含む他のViewController(BViewController)を提示します。問題は、BViewControllerのUIImageViewがAViewControllerでキャプチャされた画像を表示しないことです。私はストーリーボードを使用しないと指定します。UIImageを2つのView Controller(ストーリーボードなし)に渡すことはできません

この問題を解決する方法はありますか?私は何か見落としてますか ?ご協力ありがとうございます!

class AViewController: UIViewController { 

    ... 

    func capture(){ 

    if let videoConnection = stillImageOutput!.connection(withMediaType: AVMediaTypeVideo) { 
       videoConnection.videoOrientation = AVCaptureVideoOrientation.portrait 
       stillImageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: {(sampleBuffer, error) in 
     if (sampleBuffer != nil) { 
      let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer) 
      let dataProvider = CGDataProvider(data: imageData as! CFData) 
      let cgImageRef = CGImage(jpegDataProviderSource: dataProvider!, decode: nil, shouldInterpolate: true, intent: CGColorRenderingIntent.defaultIntent) 

      let imageSaved = UIImage(cgImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.right) 

      self.present(BViewController(), animated: false, completion: { Void in 
       BViewController().integrate(image: imageSaved) 
      })     
     }    
    } 
    } 
} 

=========================================== =====================

class BViewController : UIViewController { 

    let imageView = UIImageView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     imageView.frame = view.bounds 
     imageView.contentMode = .scaleAspectFill 
     imageView.clipsToBounds = true 
     view.addSubview(imageView) 

    } 

    func integrate(image: UIImage){ 
     imageView.image = image 
    } 
} 

答えて

0
self.present(BViewController(), animated: false, completion: { Void in 
    BViewController().integrate(image: imageSaved) 
}) 

フレーズBViewController()は "全く新しいビューコントローラを作成する" を意味します。しかし、あなたはそれを二度言う!したがって、あなたが表示するビューコントローラ(1行目)とイメージを与えるビューコントローラ(2行目)は、2つの全く異なるビューコントローラです。

+0

はい、あなたは正しいです!私はそれを修正し、私の解決策を投稿しました。ありがとう! – TheTurtle

1

私は最終的にマットの助けを借りて、それを修正:

class AViewController: UIViewController { 

    func capture(){ 
     ... 
     let destinationVC = BViewController() 
     destinationVC.image = imageSaved 
     self.present(destinationVC, animated: false, completion: nil) 
    } 
} 

//===================================================== 

class BViewController : UIViewController { 

    var image = UIImage() 
    let imageView = UIImageView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     imageView.frame = view.bounds 
     imageView.image = image 
     imageView.contentMode = .scaleAspectFill 
     imageView.clipsToBounds = true 
     view.addSubview(imageView) 

    } 
} 
関連する問題