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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

955閲覧

フォトライブラリを開くボタンが2つあり、それぞれのUIImageViewに表示させたいです。

magiee

総合スコア28

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/06/14 16:08

イメージ説明

現状のswiftの動き

①「フォトライブラリを開く」のボタンを押すと、フォトライブラリが開く。
②画像を選択すると、UIImageView(firstSampleView)に表示される。

実現したいこと

上記のボタンが2つあり、2つ目のボタンで選択した画像を、
secondSampleViewに表示させたいです。

現状、エラーになるか、2つ目のボタンで画像を選択しても、1つ目のfirstSampleViewに表示されてしまいます。

ご教授のほど、よろしくお願い致します。

該当のソースコード

import UIKit class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { var myImagePicker: UIImagePickerController! var secondMyImagePicker: UIImagePickerController! @IBOutlet weak var firstSampleView: UIImageView! @IBOutlet weak var secondSampleView: UIImageView! //「フォトライブラリを開く」ボタンを押すとフォトライブラリが起動 //画像は選択できるが、sampleViewに表示はされない。 @IBAction func photoLibraryButton(_ sender: Any) { // インスタンス生成 myImagePicker = UIImagePickerController() // デリゲート設定 myImagePicker.delegate = self //ここでイメージピッカーを表示させる。 present(myImagePicker, animated: true, completion: nil) } @IBAction func secondPhotoLibraryButton(_ sender: Any) { secondMyImagePicker = UIImagePickerController() secondMyImagePicker.delegate = self present(secondMyImagePicker, animated: true, completion: nil) } //画像が選択された時に呼ばれるメソッド //選択したイメージを表示する func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey :Any]) { 【ここで、photoLibraryButtonで選択した画像を、firstSampleViewに、 secondPhotoLibraryButtonで選択した画像を、secondSampleViewに、表示させるコードを記載すれば良いと 思うのですが、うまくいきません。if myImage == myImagePicker等でできると思ったのですが、できませんでした。】    //選択された画像を取得 if let myImage = info[.originalImage] as? UIImage { // 画面に画像を表示する firstSampleView.image = myImage //イメージピッカーを消す self.dismiss(animated: true, completion: nil) } } //画像選択がキャンセルされた時に呼ばれる. func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { // イメージピッカーを消す self.dismiss(animated: true, completion: nil) } override func viewDidLoad() { super.viewDidLoad() } }

使用している言語

swift
Xvode 11.4

ご教授のほど、よろしくお願い致します。

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

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

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

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

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

hoshi-takanori

2020/06/14 22:07

UIImagePickerController (myImagePicker と secondMyImagePicker) をプロパティとして持つ必要はありませんが、代わりにどちらのボタンが押されたのかを記憶しておくプロパティを用意して、それを使って場合分けすればいいと思います。 https://stackoverflow.com/a/30657560/1019868
magiee

2020/06/15 02:42

回答していただきありがとうございます。 リンクの方を参考に、作成してみたのですが、表示がうまくされません。 間違っているところを教えていただけないでしょうか? よろしくお願いします。 import UIKit class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet weak var firstSampleView: UIImageView! @IBOutlet weak var secondSampleView: UIImageView! var imagePicker = UIImagePickerController() var imagePicked = 0 override func viewDidLoad() { super.viewDidLoad() imagePicker.delegate = self imagePicker.sourceType = .savedPhotosAlbum imagePicker.allowsEditing = false } @IBAction func chooseImage(_ sender: Any) { if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.savedPhotosAlbum) { // インスタンス生成 imagePicker = UIImagePickerController() // デリゲート設定 imagePicker.delegate = self //ここでイメージピッカーを表示させる。 present(imagePicker, animated: true, completion: nil) } } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey :Any]) { if let pickedImage = info[.originalImage] as? UIImage { if imagePicked == 1 { firstSampleView.image = pickedImage } else if imagePicked == 2 { secondSampleView.image = pickedImage } dismiss(animated: true) } } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true) } }
tsuki01

2020/06/17 13:37

横からすみません。 ” imagePicked”の変数に値(1とか2)を設定している箇所が見当たりませんが、ボタン押下時に設定していますでしょうか? 参考にされたサイトですと、「imagePicked = sender.tag」の様にボタンのTagから値を取得しています。質問者様の方では見当たりませんので、以下の対応を行えば改善しませんでしょうか。 1、それぞれのボタンにTagを設定する(1 or 2) 2、「chooseImage」メソッドの先頭で、ボタンのTag値を取得する(「imagePicked = sender.tag」で取得する)
magiee

2020/06/19 03:21

回答していただき、ありがとうございます。 Tagの事を知っっておらず、tagの設定とtag値を取得するコードを記載したら、できました。 本当にありがとうございます。
guest

回答1

0

自己解決

UIButtonのTagに、値をいれ、Tag値を取得するコードを記載すれば解決することができました。

import UIKit class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet weak var firstSampleView: UIImageView! @IBOutlet weak var secondSampleView: UIImageView! var imagePicker = UIImagePickerController() var imagePicked = 0 override func viewDidLoad() { super.viewDidLoad() imagePicker.delegate = self imagePicker.sourceType = .savedPhotosAlbum imagePicker.allowsEditing = false } @IBAction func chooseImage(_ sender: UIButton) { if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.savedPhotosAlbum) { imagePicked = sender.tag present(imagePicker, animated: true) } } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey :Any]) { if let pickedImage = info[.originalImage] as? UIImage { if imagePicked == 1 { firstSampleView.image = pickedImage } else if imagePicked == 2 { secondSampleView.image = pickedImage } dismiss(animated: true) } } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true) } }

投稿2020/06/19 03:29

magiee

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問