I am new to IOS. I am building an image sharing app with Xcode and Swift
I am stuck in images uploading part.
How can I limit users to choose 8 images at most and then upload the chosen pictures to Firebase using a For-loop?
I would like to use For-loop since I want to set the first picture as an icon picture.
Below is what I am able to do now
I created a SignUp page and allow a user to use ImagePicker to select 1 image and upload it to Firebase. Below is my code.
import UIKit
import Firebase
class SignUpViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
{
@IBOutlet weak var iconfield: UIImageView!
@IBOutlet weak var usernamefield: UITextField!
@IBOutlet weak var emailfield: UITextField!
@IBOutlet weak var passwordfield: UITextField!
@IBOutlet weak var confirmpasswordfield: UITextField!
@IBOutlet weak var signupbutton: UIButton!
let picker = UIImagePickerController()
var userStorage: StorageReference!
var ref: DatabaseReference!
override func viewDidLoad()
{
super.viewDidLoad()
picker.delegate = self
let storage = Storage.storage().reference(forURL: "gs://whatisit-8484a.appspot.com/")
ref = Database.database().reference()
userStorage = storage.child("users")
// Do any additional setup after loading the view.
iconfield.layer.cornerRadius=iconfield.frame.size.width/2
iconfield.clipsToBounds = true
}
@IBAction func selectionpressed(_ sender: Any)
{
picker.allowsEditing = true
picker.sourceType = .photoLibrary
present(picker,animated:true,completion:nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
if let image = info[UIImagePickerControllerEditedImage] as? UIImage
{
self.iconfield.image = image
signupbutton.isHidden = false
}
self.dismiss(animated:true,completion:nil)
}
@IBAction func confirmsignup(_ sender: Any)
{
guard usernamefield.text != "",emailfield.text != "",passwordfield.text != "", confirmpasswordfield.text != "" else {return}
if passwordfield.text == confirmpasswordfield.text
{
Auth.auth().createUser(withEmail: emailfield.text!, password: passwordfield.text!, completion: { (user, error) in
if let error = error
{
print(error.localizedDescription)
}
if let user = user
{
let changeRequest = Auth.auth().currentUser!.createProfileChangeRequest()
changeRequest.displayName = self.usernamefield.text!
changeRequest.commitChanges(completion: nil)
let imageRef = self.userStorage.child("\(user.uid).jpg")
let data = UIImageJPEGRepresentation(self.iconfield.image!, 0.5)
let uploadTask = imageRef.putData(data!, metadata: nil, completion: { (metadata, err) in
if err != nil{
print(err!.localizedDescription)
}
imageRef.downloadURL(completion: { (url, er) in
if er != nil{
print(er!.localizedDescription)
}
if let url = url
{
let userInfo: [String: Any] = ["uid": user.uid,"E-mail":self.emailfield.text,"username": self.usernamefield.text,"urlToImage": url.absoluteString]
self.ref.child("users").child(user.uid).setValue(userInfo)
let vc = UIStoryboard(name: "Main",bundle:nil).instantiateViewController(withIdentifier: "homeview")
self.present(vc,animated:true,completion:nil)
}
})
})
uploadTask.resume()
}
})
}