Search code examples
iosobjective-cparse-platformxcode-storyboardpfloginviewcontroller

Customise the layout of Parse PFLoginViewController using Storyboards?


I'm building an app using parse and I was wondering if it's possible to customise look & layout of the PFLoginViewController visually using storyboards? I know it's possible to subclass it and customise it using code but I would prefer to do it visually if possible?


Solution

  • It is not possible to do it visually. However, you can make your own custom class by going on storyboard and making it like this :

    Custom Login View Controller from a Navigation Controller

    The Code would then look something like this for parse:

    import UIKit import Parse

    class CustomLoginViewController: UIViewController {

    @IBOutlet weak var usernameField: UITextField!
    @IBOutlet weak var passwordField: UITextField!
    
    var actInd : UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0,0, 150, 150)) as UIActivityIndicatorView
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.actInd.center = self.view.center
        self.actInd.hidesWhenStopped = true
        self.actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
        view.addSubview(self.actInd)
    
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    /*
    // MARK: - Navigation
    
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */
    
    // MARK: Actions
    
    @IBAction func loginAction(sender: AnyObject) {
    
        var username = self.usernameField.text
        var password = self.passwordField.text
    
        if (username.utf16Count < 4 || password.utf16Count < 5) {
    
            var alert = UIAlertView(title: "Invalid", message: "Username must be greater then 4 and Password must be greater then 5", delegate: self, cancelButtonTitle: "OK")
            alert.show()
    
        }else {
    
            self.actInd.startAnimating()
    
            PFUser.logInWithUsernameInBackground(username, password: password, block: { (user, error) -> Void in
    
                self.actInd.stopAnimating()
    
                if ((user) != nil) {
    
                    var alert = UIAlertView(title: "Success", message: "Logged In", delegate: self, cancelButtonTitle: "OK")
                    alert.show()
    
                }else {
    
                    var alert = UIAlertView(title: "Error", message: "\(error)", delegate: self, cancelButtonTitle: "OK")
                    alert.show()
    
                }
    
            })
    
        }
    
    }
    
    @IBAction func signUpAction(sender: AnyObject) {
    
        self.performSegueWithIdentifier("signUp", sender: self)
    
    }
    

    }