美文网首页
118课:实现登录和注册功能

118课:实现登录和注册功能

作者: sing_crystal | 来源:发表于2016-06-04 16:06 被阅读213次

    课程笔记文集地址:Udemy课程:The Complete iOS 9 Developer Course - Build 18 Apps

    Section 8 主要的内容是克隆 Instagram:107 - 128课。

    本节课主要讲解如何使用 LeanCloud 实现注册、登录的功能。请按照 101 课创建工程,然后继续下面的操作。

    一、布局 Storyboard

    拖入控件,设置 AutoLayout 约束,创建 Outlet 和 Action 连接。如下图:

    二、创建变量

    在类里创建两个变量:

        var signupActive = true
        var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
    

    加上之前的 Outlet 连接,一共有如下变量:

        @IBOutlet var username: UITextField!
        
        @IBOutlet var password: UITextField!
        
        @IBOutlet var signupButton: UIButton!
        
        @IBOutlet var registeredText: UILabel!
        
        @IBOutlet var loginButton: UIButton!
    
        var signupActive = true
    
        var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
    
    

    三、点击注册登录按钮

    1、没有输入信息的情况下点击注册按钮要有提示:

        @IBAction func signUp(sender: AnyObject) {        
            if username.text == "" || password.text == "" {
                // 出现提示信息            
                displayAlert("Error in form", message: "Please enter a username and password")            
            } else {
                //这里开始实现注册的功能
            }
        }
    

    这里这个提示框使用了一个单独的方法,传入不同的参数,一次就能搞定这个页面出现的所有的提示:

        func displayAlert(title: String, message: String) {
            let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
            alert.addAction((UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in
                self.dismissViewControllerAnimated(true, completion: nil)
            })))
            self.presentViewController(alert, animated: true, completion: nil)
        }
    

    2、点击注册后要出现一个旋转提示,表示正好和服务器进行交互

        @IBAction func signUp(sender: AnyObject) {
            if username.text == "" || password.text == "" {
                displayAlert("Error in form", message: "Please enter a username and password")
            } else {
                activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
                activityIndicator.center = self.view.center
                activityIndicator.hidesWhenStopped = true
                activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
                view.addSubview(activityIndicator)
                activityIndicator.startAnimating()
                //禁止其他的交互行为,禁止用户的点击等操作
                UIApplication.sharedApplication().beginIgnoringInteractionEvents()
            }
        }
    

    3、注册的实现方法

    var errorMessage = "Please try again later"
    let user = AVUser()
    user.username = username.text
    user.password = password.text
    user.signUpInBackgroundWithBlock({ (success, error) -> Void in
        // 让旋转图标不再旋转
        self.activityIndicator.stopAnimating()
        // 允许用户操作
        UIApplication.sharedApplication().endIgnoringInteractionEvents()
            if error == nil {
                // 注册成功
             else {
                // 失败的原因可能有多种,常见的是用户名已经存在。
                if let errorString = error!.userInfo["error"] as? String {
                    errorMessage = errorString
                }
                self.displayAlert("Failed SignUp", message: errorMessage)
          }
    })
    
    

    4.登录的实现方法

    AVUser.logInWithUsernameInBackground(username.text!, password: password.text!, block: { (user, error) -> Void in
    self.activityIndicator.stopAnimating()
    UIApplication.sharedApplication().endIgnoringInteractionEvents()
        if user != nil {
            // 登录成功!
        } else {
            if let errorString = error!.userInfo["error"] as? String {
            errorMessage = errorString
            }
        self.displayAlert("Failed Login", message: errorMessage)
        }
    })
    

    相关文章

      网友评论

          本文标题:118课:实现登录和注册功能

          本文链接:https://www.haomeiwen.com/subject/zkzkdttx.html