質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.69%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4742閲覧

画面遷移の時に,画像を渡したいがうまくいかない

maru.wk

総合スコア30

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2018/01/19 06:13

カメラで撮影した後アラートを発生させ,画面遷移すると同時に撮影した画像を受け渡したいのですが,画像の受け渡しがうまくいきません。
下記のコードで,画面遷移と同時に,遷移先のImageViewのimageに撮影画像を設定させているつもりなのですが,ImageViewは真っ白でした。
何がいけないのかわからず困っております。どなたかよろしくお願いいたします。
↓撮影画像の保存

swift

1//デリゲート部分を拡張する 2extension CameraViewController:AVCapturePhotoCaptureDelegate{ 3 // 映像をキャプチャする 4 func capture(_ captureOutput: AVCapturePhotoOutput, 5 didFinishProcessingPhotoSampleBuffer photoSampleBuffer: CMSampleBuffer?, 6 previewPhotoSampleBuffer: CMSampleBuffer?, 7 resolvedSettings: AVCaptureResolvedPhotoSettings, 8 bracketSettings: AVCaptureBracketedStillImageSettings?, 9 error: Error?) { 10 11 12 //バッファからjpegのデータを取り出す 13 let photoData = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: photoSampleBuffer!, previewPhotoSampleBuffer: previewPhotoSampleBuffer) 14 //photoDataがnil出ない時UIImageに変換する 15 if let data = photoData { 16 if let stillImage = UIImage(data: data) { 17 //アルバムに追加する 18 UIImageWriteToSavedPhotosAlbum(stillImage, self, nil, nil) 19 20 //画像選択のためのアラートを作成 21 let alert = UIAlertController(title: nil, message: "この画像を使用しますか?", preferredStyle: .alert) 22 //アラートにボタンをつける 23 alert.addAction(UIAlertAction(title: "YES", style: .default, handler: { action in 24 //画面を切り替える 25 let storyboard: UIStoryboard = self.storyboard! 26 let nextView = storyboard.instantiateViewController(withIdentifier: "next") as! NextViewController 27 nextView.PhotoView.image = stillImage 28 self.present(nextView, animated: true, completion: nil) 29 })) 30 alert.addAction(UIAlertAction(title: "NO", style: .cancel, handler: { action in 31 32 })) 33 //アラートを表示 34 self.present(alert, animated: true, completion: nil) 35 36 37 38 } 39 } 40 } 41}

↓遷移先

import UIKit class NextViewController: UIViewController { //UI部品を関連付け @IBOutlet weak var PhotoView: UIImageView! override func viewDidLoad() { super.viewDidLoad()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

guest

回答1

0

ベストアンサー

swift

1nextView.PhotoView.image = stillImage

この段階では、まだPhotoViewが生成されていません。(PhotoView == nil)

遷移元で画像をセットするのではなく、画像(stillImage)を渡して、セットするのは遷移先で行うのが良いと思います。

投稿2018/01/19 06:36

fuzzball

総合スコア16731

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

maru.wk

2018/01/19 07:12

ご回答ありがとうございます。 遷移先でstillImageを受け取ろうとしたのですが,stillImageはExtensionの中の変数であるせいか,遷移先で指定することができませんでした。 申し訳ありませんが,どうすれば指定できるのか教えていただけませんでしょうか?
maru.wk

2018/01/19 08:23

すみません。新しく質問させていただきます。
fuzzball

2018/01/19 09:36 編集

「画像を渡して」と書いてあるように、遷移元から遷移先に渡します。(遷移先で受け取るのではありません)流れとしては今と同じですが、いきなりImageViewにセットするのではなく、一旦画像を渡しておいて、後でImageViewにセットします。 ・NextViewControllerにUIImageのプロパティを追加。(仮にimageとします) ・CameraViewControllerで画像を渡す。 nextView.image = stillImage ・NextViewControllerでImageViewにセットする。 PhotoView.image = image (右辺のimageは追加したプロパティ) という感じです。
maru.wk

2018/01/19 09:54

画像を渡すことができました! ずっと悩んでいたので,本当に助かりました! 重ねてになりますが,ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.69%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています