2017-03-11 9 views
1

画像をあるビューから別のビューに送信し、その画像をUIImageViewに表示しようとしています。画像が次のビューコントローラに送信されていません

次のコードは画像を取得し、変数UIImageに割り当てます。私はその後、識別子が先にあるボタンから行くとセグエを作成

@IBAction func sendSnap(_ sender: Any) { 
    var size = CGSize(width: self.takenImage.size.width, height: self.takenImage.size.height) 
    UIGraphicsBeginImageContext(size) 
    let areaSize = CGRect(x: 0, y: 0, width: self.takenImage.size.width, height: self.takenImage.size.height) 
    self.takenImage.draw(in: areaSize) 
    var outputImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    self.finalImage = outputImage 
} 

言い訳グラフィック・コードは、私は、単一の画像を作成するために、画像やテキストフィールドをマージしようと遊んでてきました準備FUNC内のデータを処理し、コントローラと:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "showFinal" { 
     let lastVC = segue.destination as! TestingViewController 
     lastVC.image = self.finalImage 
    } 
} 

を私がいる問題はlastVC.imageself.finalImageを付与されていない、何らかの理由です。

最終画像の高さ/幅を確認して空でないことを確認しました。

TestingViewController(宛先)のコードは次のとおりです。 @IBOutlet weak var displayImage:UIImageView! VaRの画像:私は間違いなく、画像は全体送信されていない知っている...しかし、ここからどこへ行く、私はわからないんですのでUIImage = UIImage()

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.displayImage.image = image 
    print(image.size.height) 
    // Do any additional setup after loading the view. 
} 

image.size.heightは、コンソールで0.0を印刷していますか?

+0

あなたはpreparForSegueにブレークポイントを入れていますあなたの条件が満たされ、あなたの課題が実行されていることを確認してください。つまりあなたのセグのIDです。 –

+0

注:これらすべての "自己"あなたのプロパティ名がSwiftで必要とされる前に。 –

+0

コードが実行されていることを確認するために、segue条件内で単純な印刷を行います。それはうまくいくようです。 @AliBeadleをどのようにテストするかわからない –

答えて

1

私はあなたが両方の

@IBAction func sendSnap(_ sender: Any) {} 

同じボタンに割り当てられたセグエを持って推測しています。ボタンをタップすると、prepare() sendSnap()が呼び出され、segueがトリガーされます。どちらが最初に走っていますか?

より良いアプローチは、ボタンのタップはsendSnap()を呼び出し、そしてsendSnapの最後(にしている、「名前付き」セグエを作成することです

)コール:

performSegue(withIdentifier: "showFinal", sender: self) 
+0

'performSegue'を使用しても、画像を" theDesiredSegue "に割り当てることはできますか? –

+0

確かに '準備(セグ:UIStoryboardSegue、送信者:Any?){}'はまだ呼び出されます...これは操作の流れを制御します。 – DonMag

+0

申し訳ありません - 私はあなたの既に命名されたsegueの名前を使用していたはずです...キーはボタンの外に移動するので、直接呼び出すことができます。 – DonMag

0

1)目的地ビュー "showFinal"であなたの画像の参照を作成します。

var imageDisplay: UIImage? { 
    didSet{ 
     if let image = imageDisplay { 
      self.displayImage.image = image 
      self.displayImage.setNeedsDisplay() 
    } 
} 

2)この値を送信します。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
if segue.identifier == "showFinal" { 
    let lastVC = segue.destination as! TestingViewController 
    lastVC.imageDisplay = self.finalImage 
} 

}

関連する問題