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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

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

Swift

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

Q&A

0回答

710閲覧

Swift 5 カメラで撮った写真がボタンの画像に反映されない

gaa

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2021/10/19 07:44

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
カメラで撮った写真をボタンの画像に反映したいのですが、何故か反映しないので
教えてくれると助かります。

該当のソースコード

Swift

1@IBOutlet weak var hospitalText: UITextField! 2 3 @IBOutlet weak var examinationText: UITextField! 4 5 @IBOutlet weak var cameraImage: UIButton! 6 7 8 @IBOutlet weak var LoadIndicator: UIActivityIndicatorView! 9 10 11 var photoImage : UIImage! 12 13 var imageFile :String! 14 15 var downloadUrl: String! 16 17 private let db = Firestore.firestore() 18 19 private let userID = Auth.auth().currentUser?.uid 20 21 22 23 24 override func viewDidLoad() { 25 super.viewDidLoad() 26 LoadIndicator.center = view.center 27 LoadIndicator.style = .large 28 LoadIndicator.color = .blue 29 view.addSubview(LoadIndicator) 30 examinationText.delegate = self 31 hospitalText.delegate = self 32 } 33 34 func textFieldShouldReturn(_ textField:UITextField ) -> Bool{ 35 36 hospitalText.resignFirstResponder() 37 examinationText.resignFirstResponder() 38 return true 39 } 40 41 42 43 func getTime() -> String{ 44 //時間を取得する 45 let dt = Date() 46 let dateFormatter = DateFormatter() 47 //日付の書式&日本時間にする 48 dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "yMMMdHm", options: 0, locale: Locale(identifier: "ja_JP")) 49 let date = dateFormatter.string(from:dt) 50 51 return date 52 } 53 54 55 56 57 58 func uploadImage() -> String { 59 60 61 let storage = Storage.storage().reference(forURL: String(describing: "Medicine")) 62 63 let imageRef = storage.child("MedicineImage").child("(userID)") 64 65 let imageData:Data = photoImage.pngData()! 66 67 imageRef.putData(imageData,metadata: nil){ (metaData,error) in 68 69 if error != nil{ 70 print(error.debugDescription) 71 return 72 } 73 } 74 imageRef.downloadURL(){ url,err in 75 76 if let url = url { 77 self.downloadUrl = url.absoluteString 78 }else{ 79 print(err as Any) 80 } 81 } 82 return downloadUrl 83 } 84 85 86 87 88 89 90 91 private func Add() { 92 93 imageFile = uploadImage() 94 95 db.collection("users").document("(userID!)").collection("medicinedata").document((getTime())).setData([ 96 "hospitalData": hospitalText.text! , 97 "examinationData": examinationText.text!, 98 "time": getTime(), 99 "photoData": imageFile! 100 ]) 101 } 102 103 104 105 @IBAction func startUiImagePickerController(_ sender: Any) { 106 //カメラを起動する 107 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera){ 108 let picker = UIImagePickerController() 109 picker.sourceType = .camera 110 picker.modalPresentationStyle = UIModalPresentationStyle.fullScreen 111 picker.delegate = self 112 present(picker, animated: true, completion: nil) 113 114 } 115 } 116 117 118 private func imagePickController(_ imagePick: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 119 120 if let photo = info[.originalImage] as? UIImage{ 121 122 photoImage = UIImage(named:"(photo)") 123 124 cameraImage.setImage(photoImage, for: .normal) 125 imagePick.dismiss(animated: true, completion: nil) 126 127 }else{ 128 129 let dialog = UIAlertController(title: "画像を取得出来ませんでした", message: nil, preferredStyle: .alert) 130 let dialogAction = UIAlertAction(title: "OK", style: .default, handler: nil) 131 dialog.addAction(dialogAction) 132 present(dialog, animated: true, completion: nil) 133 134 } 135 }

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

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

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

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

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

hoshi-takanori

2021/10/19 20:38

photoImage = UIImage(named:"\(photo)") は何をしたいのでしょうか?
gaa

2021/10/20 05:51

カメラで撮った写真をcameraImageのsetImageにセットするための変数です。
hoshi-takanori

2021/10/20 07:21

書き方が悪かったですね。 if let photo = info[.originalImage] as? UIImage{ の時点で photo というローカル変数にはカメラで撮った写真が格納されてるはずです。 それを photoImage プロパティに格納したいなら photoImage = photo だけでいいはず。 photoImage = UIImage(named:"\(photo)") だと、まず photo を文字列にして ("<UIImage:0x〜>" みたいな謎の文字列になる) その名前の画像リソースを Assets.xcassets の中から探します。が、まず見つからないと思うので、nil になり、何も表示されないと思います。
gaa

2021/10/20 07:26

ということは、そのまま photoImage = photoという感じで入れれば良いということですか?
gaa

2021/10/20 07:37

カメラで撮った写真をphotoImage = photoという感じで入れてcameraImage.setImage(photoImage, for: .normal)という形で入れれば表示されるということですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問