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

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

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

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

Q&A

0回答

343閲覧

あるクラスの画像データを他クラスのViewContorollerに表示させる方法

MasatoN

総合スコア0

Swift

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

0グッド

0クリップ

投稿2021/04/22 06:30

1.実現したいこと
カメラで取得した画像データを2つのViewControllerに表示させるアプリを実装させています。

 カメラ画像をアプリの起動画面に表示させるまでは上手くいったのですが、他クラスへの値の受け渡し方法がわからず、もう一つのViewControllerに画像を表示させることができません。

 まだSwiftを始めたばかりで改善方法がわからないので、教えていただけると幸いです
2.発生しているエラー
3.試してみたこと
1.実現したいこと
下のような、カメラで取得した画像データを2つのViewControllerに表示させるアプリを実装させています。

図中のボタンを押すと
イメージ説明
カメラが起動し
イメージ説明
撮影した画像をホームと
イメージ説明
folder画面に表示できるようなアプリを作成したいです。
イメージ説明

 カメラ画像をアプリの起動画面に表示させるまでは上手くいったのですが、他クラスへの値の受け渡し方法がわからず、もう一つのViewControllerに画像を表示させることができません。まだSwiftを始めたばかりで右も左もわからないので、改善方法を教えていただけると幸いです。

2.発生しているエラー・エラーが起きた経緯
まず、TabBarControllerとViewController二つを使用して下画像のようにストーリーボードを組み立てました。

Main.storyboard
イメージ説明

 次に、作成したストーリーボードに則って、ViewController.swiftを作成しました。

ViewController.swift

swift,Xcode

1import UIKit 2 3class ViewController: UIViewController, UIImagePickerControllerDelegate & UINavigationControllerDelegate {//ホーム画面 4 5 @IBOutlet weak var imageView: UIImageView! 6 @IBAction func UploadCamera(_ sender: Any) { 7 let camera = UIImagePickerController.SourceType.camera 8 if UIImagePickerController.isSourceTypeAvailable(camera) { 9 let picker = UIImagePickerController()//モーダルビュー 10 picker.sourceType = camera//代入 11 picker.delegate = self//インスタンス 12 self.present(picker, animated: true)//画面表示 13 } 14 } 15 16 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 17 //画像はinfoに格納. 18 let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage 19 let Second = SecondViewController() 20 Second.secondimageView.image = image//secondimageViewに代入 21 self.imageView.image = image// imageViewに代入 22 UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)//画像を保存. 23 self.dismiss(animated: true)//mordalViewControllerを消去. 24 } 25 26 override func viewDidLoad() { 27 super.viewDidLoad() 28 // Do any additional setup after loading the view. 29 } 30} 31 32class SecondViewController: UIViewController {//folder画面 33 @IBOutlet weak var secondimageView: UIImageView! 34 override func viewDidLoad() { 35 super.viewDidLoad() 36 // Do any additional setup after loading the view. 37 } 38}

ここで、ViewControllerはホーム画面,SecondViewControllerはfolder画面を意味します。
これをiPhone8の実機で実行しカメラ撮影をすると、下のようなエラーが出てきてしまいました。
イメージ説明

うまくカメラで得たデータを他のクラスに渡す方法がよく分からなかったので、改善策教えていただけると幸いです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomato879241

2021/04/22 06:34

それはまずサンプルのアプリでも使って、1つのview controllerから他のview controllerに文字列を送る練習でもした方がいいのではないでしょうか?
MasatoN

2021/04/22 07:48

了解しました!少し試してみます。
hoshi-takanori

2021/04/22 08:42

TabBarController を使うのであれば画面遷移も TabBarController がやることになりますし、TabBarController 経由で受け渡すことになるのでは。 なお、didFinishPickingMediaWithInfo メソッドの中で SecondViewController のインスタンスを生成してますが、それは駄目なやつです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問