標籤:技術分享 image word str ack blog 輸入 分享圖片 tail
1.登入失敗提示,我們進行Toast提示,告訴使用者VIP號碼輸入不正確;
登入成功,我們一般跳轉到主介面,跳轉時,把使用者id等資料 傳遞給主視圖控制器,
2.拖拽一個View控制項,來建立一個主視圖,並拖拽一個Text控制項,準備來顯示傳遞過來的值
3.建立一個主視圖控制器:
4.給主視圖設定控制器:
5.實現主視圖的功能:
// 主介面import UIKitclass 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 UIKitimport SwiftyJSONimport 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開發-登入介面開發(7)跳轉傳值-Swfit4.1_Xcode9.3.1