在使用 Parse 注册期间尝试将图片设置为必填字段
Trying to set picture as a mandatory field during signup with Parse
我对编码还是个新手。我已经设置了我的注册屏幕,但我想在注册期间强制上传个人资料图片。如果照片未上传,我尝试添加 "if statement" 以显示警报,但我没有成功让它工作。有什么建议么?这是我的代码:
class SignUpViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var usernameField: UITextField!
@IBOutlet var activityIndicator: UIActivityIndicatorView!
@IBOutlet var message: UILabel!
@IBOutlet var emailField: UITextField!
@IBOutlet var passwordField: UITextField!
@IBOutlet var firstNameField: UITextField!
@IBOutlet var lastNameField: UITextField!
@IBOutlet var profilePic: UIImageView!
@IBAction func submitDataAction(sender: AnyObject) {
var userName = usernameField.text
var userEmail = emailField.text
var userPassword = passwordField.text
var firstName = firstNameField.text
var lastName = lastNameField.text
var initialImage = UIImage(named: "DidNotLoad")
var picfile = profilePic.image
let imageData = UIImagePNGRepresentation(picfile)
let imageFile = PFFile(data: imageData)
userEmail = userEmail.lowercaseString
// Start activity indicator
activityIndicator.hidden = false
activityIndicator.startAnimating()
var newUser = PFUser()
newUser.username = userName.lowercaseString
newUser.password = userPassword
newUser.email = userEmail
newUser["FirstName"] = firstName
newUser["LastName"] = lastName
newUser["ProfilePic"] = imageFile
newUser.signUpInBackgroundWithBlock {(succeeded: Bool, error: NSError?) -> Void in
if error == nil {
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("PushToEventsTableFromSignUp", sender: self)
}
self.activityIndicator.stopAnimating()
}
else {
if let message: AnyObject = error!.userInfo!["error"] {
self.message.text = "\(message)"
}
}
}
}
@IBAction func uploadPhoto(sender: AnyObject) {
//Create variable for image controller
var picPhoto = UIImagePickerController()
picPhoto.delegate = self
picPhoto.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picPhoto.allowsEditing = true
self.presentViewController(picPhoto, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})
profilePic.image = image
}
override func viewDidLoad() {
super.viewDidLoad()
self.makingRoundedImageProfileWithRoundedBorder()
activityIndicator.hidden = true
activityIndicator.hidesWhenStopped = true
// Do any additional setup after loading the view.
}
private func makingRoundedImageProfileWithRoundedBorder() {
self.profilePic.layer.cornerRadius = self.profilePic.bounds.size.width/2;
self.profilePic.layer.masksToBounds = true
// self.profilePic.clipsToBounds = true
//Create Border around profile Pic
self.profilePic.layer.borderWidth = 2.0
self.profilePic.layer.borderColor = UIColor.whiteColor().CGColor
}
您可以在开始真正的 Parse 注册之前检查用户是否选择了图像。例如,在您的 didFinishPickingImage
方法中,您可以将 bool 设置为 true:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})
profilePic.image = image
pictureChosen = true
}
之后你检查 submitDataAction
如果 bool 为真:
if pictureChosen{
//Submit the signup
}
我对编码还是个新手。我已经设置了我的注册屏幕,但我想在注册期间强制上传个人资料图片。如果照片未上传,我尝试添加 "if statement" 以显示警报,但我没有成功让它工作。有什么建议么?这是我的代码:
class SignUpViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var usernameField: UITextField!
@IBOutlet var activityIndicator: UIActivityIndicatorView!
@IBOutlet var message: UILabel!
@IBOutlet var emailField: UITextField!
@IBOutlet var passwordField: UITextField!
@IBOutlet var firstNameField: UITextField!
@IBOutlet var lastNameField: UITextField!
@IBOutlet var profilePic: UIImageView!
@IBAction func submitDataAction(sender: AnyObject) {
var userName = usernameField.text
var userEmail = emailField.text
var userPassword = passwordField.text
var firstName = firstNameField.text
var lastName = lastNameField.text
var initialImage = UIImage(named: "DidNotLoad")
var picfile = profilePic.image
let imageData = UIImagePNGRepresentation(picfile)
let imageFile = PFFile(data: imageData)
userEmail = userEmail.lowercaseString
// Start activity indicator
activityIndicator.hidden = false
activityIndicator.startAnimating()
var newUser = PFUser()
newUser.username = userName.lowercaseString
newUser.password = userPassword
newUser.email = userEmail
newUser["FirstName"] = firstName
newUser["LastName"] = lastName
newUser["ProfilePic"] = imageFile
newUser.signUpInBackgroundWithBlock {(succeeded: Bool, error: NSError?) -> Void in
if error == nil {
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("PushToEventsTableFromSignUp", sender: self)
}
self.activityIndicator.stopAnimating()
}
else {
if let message: AnyObject = error!.userInfo!["error"] {
self.message.text = "\(message)"
}
}
}
}
@IBAction func uploadPhoto(sender: AnyObject) {
//Create variable for image controller
var picPhoto = UIImagePickerController()
picPhoto.delegate = self
picPhoto.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picPhoto.allowsEditing = true
self.presentViewController(picPhoto, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})
profilePic.image = image
}
override func viewDidLoad() {
super.viewDidLoad()
self.makingRoundedImageProfileWithRoundedBorder()
activityIndicator.hidden = true
activityIndicator.hidesWhenStopped = true
// Do any additional setup after loading the view.
}
private func makingRoundedImageProfileWithRoundedBorder() {
self.profilePic.layer.cornerRadius = self.profilePic.bounds.size.width/2;
self.profilePic.layer.masksToBounds = true
// self.profilePic.clipsToBounds = true
//Create Border around profile Pic
self.profilePic.layer.borderWidth = 2.0
self.profilePic.layer.borderColor = UIColor.whiteColor().CGColor
}
您可以在开始真正的 Parse 注册之前检查用户是否选择了图像。例如,在您的 didFinishPickingImage
方法中,您可以将 bool 设置为 true:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})
profilePic.image = image
pictureChosen = true
}
之后你检查 submitDataAction
如果 bool 为真:
if pictureChosen{
//Submit the signup
}