0

私はユーザーが自分の写真をアップロードするために使用している2つのイメージビューを持っています。メインプロファイルの画像をアップロードするとすべて正常に動作し、画像は適切なFirebaseストレージの子供に保存されますが、次の画像をアップロードして次の画像をアップロードすると、間違ったFirebase Storageに保存されます。UIImagepickerが間違ったFirebaseストレージにアップロードされています

私は2つの別々のuiimageピッカーを持つことでこの問題を解決しようとしましたが、それは問題を解決していないようです。だから私の質問は、SecondPhotoを押すと、なぜそれがProfile_Imagesにアップロードされ、私が欲しいものではないSecond_Imagesにアップロードされているのですか?

import UIKit 
import Firebase 
import FBSDKLoginKit 

class ProfileViewController: UIViewController,  UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet weak var imageView: UIImageView! 
@IBOutlet weak var secondPhoto: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.imageView.frame.size.width/2; 
    self.imageView.layer.cornerRadius = 24 
    self.imageView.clipsToBounds = true; 

self.secondPhoto.layer.cornerRadius = self.secondPhoto.frame.size.height/2; 


    secondPhoto.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSecondProfileImageView))) 


    profilePicture.addGestureRecognizer(UITapGestureRecognizer(target:self, action: #selector(handleSelectProfileImageView))) 

    let uid = FIRAuth.auth()?.currentUser?.uid 
    FIRDatabase.database().reference().child("Users").child(uid!).observeSingleEvent(of: .value, with: {(snapshot) in if let dictionary = snapshot.value as? [String: AnyObject] 
    { 
     self.imageView.loadImageUsingCachWithUrlString(urlString:dictionary["profileImageUrl"] as! String) 
     self.secondPhoto.loadImageUsingCachWithUrlString(urlString:dictionary["secondImageUrl"] as! String) 

     } 
    }, withCancel: nil) 

} 
    func handleSelectProfileImageView() { 
     let picker = UIImagePickerController() 
     picker.delegate = self 
     picker.allowsEditing = true 
     present(picker, animated: true, completion:nil) 
    } 
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

     var selectedImageFromPicker:UIImage? 


     if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage{ 
      selectedImageFromPicker = editedImage 

     }else if let originalImage = info["UIIMagePickerControllerOriginalImage"] as? UIImage{ 
      selectedImageFromPicker = originalImage 

     } 

     if let selectedImage = selectedImageFromPicker{ 
      updateProfileImageInFirebase(image: selectedImage) 
     } 

     dismiss(animated: true, completion: nil) 
    } 

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
     print("canceled picker") 
     dismiss(animated: true, completion: nil) 
    } 

func updateProfileImageInFirebase(image: UIImage){ 
    let user = FIRAuth.auth()?.currentUser 
    guard let uid = user?.uid else { 
     return 
    } 
    if user != nil { 
     let imageName = NSUUID().uuidString 
     let storageRef = FIRStorage.storage().reference().child("Profile_Images").child("\(imageName).jpg") 
     if let uploadData = UIImageJPEGRepresentation(image, 0.1) { 
      storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in 
       if error != nil { 
        print(error!) 
        return 
       } 

       if let profileImageUrl = metadata?.downloadURL()?.absoluteString { 
        FIRDatabase.database().reference().child("Users").child(uid).updateChildValues(["profileImageUrl": profileImageUrl]) 
       } 
      }) 
     } 
    } 
} 

func handleSecondProfileImageView() { 
    let picker = UIImagePickerController() 
    picker.delegate = self 
    picker.allowsEditing = true 
    present(picker, animated: true, completion:nil) 
} 
func secondimagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    var selectedImageFromPicker:UIImage? 


    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage{ 
     selectedImageFromPicker = editedImage 

    }else if let originalImage = info["UIIMagePickerControllerOriginalImage"] as? UIImage{ 
     selectedImageFromPicker = originalImage 

    } 

    if let selectedImage = selectedImageFromPicker{ 
     updatesecondAvatarImageInFirebase(image: selectedImage) 
    } 

    dismiss(animated: true, completion: nil) 
} 

func secondimagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    print("canceled picker") 
    dismiss(animated: true, completion: nil) 
} 

func updatesecondAvatarImageInFirebase(image: UIImage){ 
    let user = FIRAuth.auth()?.currentUser 
    guard let uid = user?.uid else { 
     return 
    } 
    if user != nil { 
     let imageName = NSUUID().uuidString 
     let storageRef = FIRStorage.storage().reference().child("Second_Images").child("\(imageName).jpg") 
     if let uploadData = UIImageJPEGRepresentation(image, 0.1) { 
      storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in 
       if error != nil { 
        print(error!) 
        return 
       } 

       if let secondImageUrl = metadata?.downloadURL()?.absoluteString { 
        FIRDatabase.database().reference().child("Users").child(uid).updateChildValues(["secondImageUrl": secondImageUrl]) 
       } 
      }) 
     } 
    } 
} 

}

+0

を使用することによってそれを解決することができました –

答えて

0

私はあなたがすべての絵/ UIImageViewのための具体的なIMAGEPATHを使用することができ、ボタンを追加するタグを追加し、スイッチ制御

関連する問題