ストーリーボード未使用で開発しています。
今やっている事
UIImagePickerControllerを使って
hugaImageView.image(UIImageView)にpickedImage(image)を代入して表示させ、
その後にUIButtonをタップして完了 という流れに作りました。
(コードはここに書いていませんが)表示させたタイミングと同時にFirebase StrageにもpickedImageを保存することが出来ています。
実現したい事
ですが、これだとUIButtonをタップして完了しなくてもFirebase Strageに保存されてしまうので、
タップするまではpickedImage(image)を表示するだけの処理を実現したいです。
下記コード①では、下記コード②にあるfunc uploadImage(Storageに保存する為だけのメソッド)をuploadImage(image1: image)という形でinfoを値に持たせているのですが、
下記コード②では
エラー⚠️Cannot convert value of type 'UIImage.Type' to expected argument type 'UIImage'が発生します。
コード①,②両方でdidFinishPickingMediaWithInfoを使用している為のエラーでしょうか?
原因が分からない為、質問させていただきます。
よろしくお願い申し上げます。
コード① extension HogeViewController: UINavigationControllerDelegate { func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { picker.dismiss(animated: true, completion: nil) } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String:Any]) { if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage { hugaImageView.image = pickedImage } if info[UIImagePickerControllerOriginalImage] != nil { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { uploadImage(image1: image) } } picker.dismiss(animated: true, completion: nil) } }
class HogeViewController: UIViewController, UIImagePickerControllerDelegate { // ...省略 @objc func pushChange(sender:UIButton) { //タップを検知してuploadImageメソッドを発火させたいが、エラーが発生する。 uploadImage(image1: UIImage)//ここです⚠️ self.dismiss(animated: true, completion: nil) } func uploadImage(image1: UIImage) { let storage = Storage.storage() let storageRef = storage.reference(forURL: "gs:hugahuga.appspot.com") let meta = StorageMetadata() meta.contentType = "image/jpeg" //ここでimagePickerControllerを使っても意味がない? func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String:Any]) { if let image1 = UIImagePNGRepresentation([UIImagePickerControllerOriginalImage] as! UIImage) { let reference1 = storageRef.child(...省略) reference1.putData(image1, metadata: meta, completion: { metaData, error in print(metaData) print(error) }) dismiss(animated: true, completion: nil) } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/25 08:52 編集
退会済みユーザー
2018/07/26 01:52 編集