@@ -11,20 +11,43 @@ import Photos
1111
1212class EditProfileTableViewController : UITableViewController , UIImagePickerControllerDelegate , UINavigationControllerDelegate {
1313
14- @IBOutlet weak var coverImage : UIImageView !
15- @IBOutlet weak var profileImage : UIImageView !
14+ @IBOutlet weak var coverImage : PFImageView !
15+ @IBOutlet weak var profileImage : PFImageView !
1616 @IBOutlet weak var profileImageOverlay : UIVisualEffectView !
1717 @IBOutlet weak var aboutMeTextView : UITextView !
18- @IBOutlet weak var nameTextField : UITextField !
18+ @IBOutlet weak var logOutButton : DesignableButton !
19+ @IBOutlet weak var firstNameTextField : UITextField !
20+ @IBOutlet weak var lastNameTextField : UITextField !
1921 @IBOutlet weak var ageTextField : UITextField !
2022 @IBOutlet weak var locationTextField : UITextField !
21- @IBOutlet weak var logOutButton : DesignableButton !
2223
24+ var user : PFUser ! = PFUser . currentUser ( )
2325 private var profilePic : UIImage !
2426 private var coverPic : UIImage !
2527
26- let numberOfRowsAtSection : [ Int ] = [ 4 , 3 ]
28+ let numberOfRowsAtSection : [ Int ] = [ 5 , 3 ]
2729
30+ @IBAction func saveProfileInformationPressed( sender: AnyObject ) {
31+ if ( self . validAttributes ( ) ) {
32+ let firstName = self . firstNameTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
33+ let lastName = self . lastNameTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
34+ let age = self . ageTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
35+ let location = self . locationTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
36+ let biography = self . aboutMeTextView. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
37+ self . user. setObject ( firstName!, forKey: " firstName " )
38+ self . user. setObject ( lastName!, forKey: " lastName " )
39+ self . user. setObject ( age!, forKey: " age " )
40+ self . user. setObject ( location!, forKey: " location " )
41+ self . user. setObject ( biography!, forKey: " biography " )
42+ self . user. saveEventually ( )
43+ self . dismissViewControllerAnimated ( true , completion: nil )
44+ } else {
45+ let alert = UIAlertController . init ( title: " Save Error " , message: " Please enter all your information before we can save your profile. " , preferredStyle: . Alert)
46+ let okAction = UIAlertAction . init ( title: " OK " , style: . Default, handler: nil )
47+ alert. addAction ( okAction)
48+ self . presentViewController ( alert, animated: true , completion: nil )
49+ }
50+ }
2851 //MARK: - Change Status Bar to White
2952 override func preferredStatusBarStyle( ) -> UIStatusBarStyle {
3053 return . LightContent
@@ -43,15 +66,48 @@ class EditProfileTableViewController: UITableViewController, UIImagePickerContro
4366 NSNotificationCenter . defaultCenter ( ) . addObserver ( self , selector: " keyboardWillHide: " , name: UIKeyboardWillHideNotification, object: nil )
4467 NSNotificationCenter . defaultCenter ( ) . addObserver ( self , selector: " keyboardWillShow: " , name: UIKeyboardWillShowNotification, object: nil )
4568
46-
69+ // Change the keyboard type for the age text field
70+ self . ageTextField. keyboardType = . DecimalPad
71+
72+ // Update the profile with user information
73+ self . loadImages ( )
74+ self . updateTextFields ( )
4775 }
4876
49- //MARK: Text View Handler
77+ private func loadImages( ) {
78+ self . profileImage. file = self . user. objectForKey ( " avatar " ) as? PFFile
79+ self . profileImage. loadInBackground ( )
80+ }
5081
51- deinit {
52- NSNotificationCenter . defaultCenter ( ) . removeObserver ( self )
82+ // Sets the initial tableview textfield values
83+ private func updateTextFields( ) {
84+ self . firstNameTextField. text = self . user. objectForKey ( " firstName " ) as? String
85+ self . lastNameTextField. text = self . user. objectForKey ( " lastName " ) as? String
86+
87+ if ( self . user. objectForKey ( " age " ) != nil ) {
88+ let age = self . user. objectForKey ( " age " ) as? Int
89+ self . ageTextField. text = " \( age) "
90+ }
91+
92+ self . locationTextField. text = self . user. objectForKey ( " location " ) as? String
93+
94+ // Update the about me placeholder
95+ self . aboutMeTextView. placeholder = " Tell us about yourself... "
96+ self . aboutMeTextView. text = self . user. objectForKey ( " biography " ) as? String
97+ }
98+
99+ private func validAttributes( ) -> Bool {
100+ let firstName = self . firstNameTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
101+ let lastName = self . lastNameTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
102+ let age = self . ageTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
103+ let location = self . locationTextField. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
104+ let biography = self . aboutMeTextView. text? . stringByTrimmingCharactersInSet ( NSCharacterSet . whitespaceAndNewlineCharacterSet ( ) )
105+
106+ return firstName? . length > 0 && lastName? . length > 0 && age? . length > 0 && location? . length > 0 && biography? . length > 0
53107 }
54108
109+ //MARK: Text View Handler
110+
55111 func keyboardWillHide( notification: NSNotification ) {
56112 self . aboutMeTextView. contentInset = UIEdgeInsetsZero
57113 self . aboutMeTextView. scrollIndicatorInsets = UIEdgeInsetsZero
0 commit comments