iOS开发-登录界面开发跳转传值-Swfit4.1_Xcode9.3.1

Posted iwanghang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发-登录界面开发跳转传值-Swfit4.1_Xcode9.3.1相关的知识,希望对你有一定的参考价值。

1.登录失败提示,我们进行Toast提示,告诉用户VIP号码输入不正确;

  登录成功,我们一般跳转到主界面,跳转时,把用户id等数据 传递给主视图控制器,如图:

2.拖拽一个View控件,来建立一个主视图,并拖拽一个Text控件,准备来显示传递过来的值

3.创建一个主视图控制器:

4.给主视图设置控制器:

5.实现主视图的功能:

// 主界面
import UIKit

class HomeViewController: UIViewController {

    @IBOutlet weak var tv_main: UITextField!
    
    var vip_id_str:String?  // 准备接收传过来的值
   
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tv_main.text = vip_id_str   // 把传过来的值,设置到视图

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

6.实现登录成功后,跳转,并传递值:

  6.1.关键代码1:

                    // 跳转页面 - 从登录界面跳转到主界面
                    //      withIdentifier  跳转连接
                    //      sender          要传递的值
                    //      这里,我们传递vip_id,一个字符串。如果需要,我们也可以传递一个对象
                    self.performSegue(withIdentifier: "main2home", sender: vip_id)

  6.2.关键代码2:

    // 在这个方法中给新页面传递参数
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "main2home"{ // 如果 标识符 是 main2home
            // 获取要跳转的视图的控制器
            let controller = segue.destination as! HomeViewController // HomeViewController 被传递的视图的控制器
            // 设置要跳转的视图的控制器 哪个变量(vip_id_str) 接收 传递过去的值(vip_id)
            controller.vip_id_str = sender as? String                 // vip_id_str         被传递的视图的控制器 的 对应变量
        }
    }

  6.3.完整代码:

import UIKit
import SwiftyJSON
import Toast_Swift

// 登录界面
class ViewController: UIViewController {
    
    
    @IBOutlet weak var et_vip_code: UITextField! // VIP号码
    @IBOutlet weak var bt_login: UIButton! // 登录按钮

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    // 登录按钮 的 点击事件
    @IBAction func bt_login_clicked(_ sender: Any) {
        //创建请求参数
        // let params = ["VIP_keyworld":"595466","password":"123456"] // 多个参数写法
        // let params = ["VIP_keyworld":"595466"]
        
        let vipCode = et_vip_code.text!
        let params = ["VIP_keyworld":vipCode] // 请求参数
        let loginUrl = "http://www.xxx.com/xxxx/xxxxx.asp" // 请求地址
        
        // 使用 AFNetworking 发送POST请求
        NetworkTools.shareInstance.request(methodType: .POST, urlString: loginUrl, parameters: params as [String : AnyObject]) { (result : AnyObject?, error : Error?) in
            
            if error != nil  {
                print(error!)
                return
            }
            print(result!)
            
            
            // 使用 SwiftyJSON 解析json -- 这里解析的是 jsonObject
            // 如果要解析 jsonArray, SwiftyJSON 更加丝滑, 参考 http://www.hangge.com/blog/cache/detail_968.html
            let json = JSON(result as Any)
            if let vip_id = json["id"].string {
                print("id是:",vip_id)
                self.view.makeToast("id = " + vip_id) // Toast 提示
                if vip_id == "0" {
                    self.view.makeToast("请输入正确的VIP号码") // Toast 提示
                }else{
                    self.view.makeToast("登录成功") // Toast 提示

                    // 跳转页面 - 从登录界面跳转到主界面
                    //      withIdentifier  跳转连接
                    //      sender          要传递的值
                    //      这里,我们传递vip_id,一个字符串。如果需要,我们也可以传递一个对象
                    self.performSegue(withIdentifier: "main2home", sender: vip_id)
                }
            }
        }
    }
    
    // 在这个方法中给新页面传递参数
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "main2home"{ // 如果 标识符 是 main2home
            // 获取要跳转的视图的控制器
            let controller = segue.destination as! HomeViewController // HomeViewController 被传递的视图的控制器
            // 设置要跳转的视图的控制器 哪个变量(vip_id_str) 接收 传递过去的值(vip_id)
            controller.vip_id_str = sender as? String                 // vip_id_str         被传递的视图的控制器 的 对应变量
        }
    }
    
    // 输入框内容 改变 监听
    @IBAction func et_vip_code_changed(_ sender: Any) {
        let vipCode = et_vip_code.text!
        if vipCode.count > 0 {
            bt_login.backgroundColor = #colorLiteral(red: 0.1921568627, green: 0.5411764706, blue: 1, alpha: 1) // 已经输入VIP号码 登录按钮背景色
        } else{
            bt_login.backgroundColor = #colorLiteral(red: 0.3137254902, green: 0.3921568627, blue: 0.5137254902, alpha: 1) // 没有输入VIP号码 登录按钮背景色
        }
    }
    
}

7.后面的博文,我们将继续练习UI实现和网络请求~

以上是关于iOS开发-登录界面开发跳转传值-Swfit4.1_Xcode9.3.1的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发-登录界面开发Toast-Swift的使用-Swfit4.1_Xcode9.3.1

微信小程序 跳转传值实现方式

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

uniapp 页面跳转传值和接收

Vue-(10)页面跳转-传值

EasyUI页面跳转后传值出现乱码