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