项目:teowlewBACK0121
viewcontroller 一界面
//
// ViewController.swift
// teowiewBACK0121
//
// Created by Mac on 1/21/19.
//
//第一界面
import UIKit
//继承协议
class ViewController: UIViewController,SecondDateProtocol{
//完整协议方法
func label_text_date_send(date: String) {
recive_msg.text = date
}
var recive_msg_s : String?
@IBOutlet weak var first_texl_field: UITextField!
@IBAction func send_to_second_button(_ sender: UIButton) {
//发送数据
if first_texl_field.text != "" {
//绑定链接
performSegue(withIdentifier: "main_to_second", sender: self)
}else{
recive_msg.text = "请输入数据"
}
}
@IBOutlet weak var recive_msg: UILabel!
@IBAction func change_background_button(_ sender: UIButton) {
//更换背景颜色
view.backgroundColor = #colorLiteral(red: 1, green: 0.7808927183, blue: 0.6309794435, alpha: 1)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
recive_msg.text = recive_msg_s
}
//扩展链接
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "main_to_second"{
//建立第二界面在本界面的代理,或者是将第二界面在本界面实例化
let second_view_controller = segue.destination as! SecondViewController
//操作第二界面的属性
second_view_controller.recive_msg = first_texl_field.text
//将而界面的协议变量,定义为自身
second_view_controller.second_date_protocol = self
}
}
}
/*
1,不要在按钮上加页面segue ,要两个视图之间加segue
*/
secondviewcontroller 二界面
//
// SecondViewController.swift
// teowiewBACK0121
//
// Created by Mac on 1/21/19.
//
import UIKit
//创建协议
protocol SecondDateProtocol {
//协议方法,注意是不完整方法
func label_text_date_send(date:String)
}
class SecondViewController: UIViewController {
//
var recive_msg : String?
//创建协议变量
var second_date_protocol : SecondDateProtocol?
@IBOutlet weak var second_text_field: UITextField!
@IBAction func send_to_main_button(_ sender: UIButton) {
if second_text_field.text != "" {
performSegue(withIdentifier: "second_to_main", sender: self)
}else{
recive_msg_lable.text = "请输入数据"
}
}
@IBOutlet weak var recive_msg_lable: UILabel!
//返回按钮
@IBAction func back_to_main_button(_ sender: UIButton) {
if second_text_field.text != "" {
//使用协议变量的方法,实现数据传递
second_date_protocol?.label_text_date_send(date: second_text_field.text!)
//自身消失
self.dismiss(animated: true, completion: nil)
}else{
recive_msg_lable.text = "请输入数据"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
recive_msg_lable.text = recive_msg
}
//扩展链接
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "second_to_main" {
let main_view_controller = segue.destination as! ViewController
//
main_view_controller.recive_msg_s = second_text_field.text
}
}
}
/*
视图执行消失的方法,实现返回上个界面的效果,上个界面的内容不会改变。
self.dismiss(animated: true, completion: nil)
采用返回效果传递数据:
二界面向一界面返回,并且发送二界面的数据。
1.二界面在类外创建协议,协议内声明方法,一界面继承协议,将方法完整。
protocol SecondDateProtocol {
//二界面:协议方法,注意是不完整方法
func label_text_date_send(date:String)
}
//一界面:继承协议
class ViewController: UIViewController,SecondDateProtocol{
//完整协议方法
func label_text_date_send(date: String) {
recive_msg.text = date
}
2.二界面在类内初始化协议,就是声明变量为协议,然后可以执行协议内分方法
//创建协议变量
var second_date_protocol : SecondDateProtocol?
3,一界面在segue的扩展perpare中,将二界面的协议属性定义为自身
//一界面:扩展链接
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "main_to_second"{
//建立第二界面在本界面的代理,或者是将第二界面在本界面实例化
let second_view_controller = segue.destination as! SecondViewController
//将二界面的协议变量,定义为自身
second_view_controller.second_date_protocol = self
}
}
4,二界面在触动按钮中执行 协议变量的方法,实现数据传递
//二界面:返回按钮
@IBAction func back_to_main_button(_ sender: UIButton) {
if second_text_field.text != "" {
//使用协议变量的方法,实现数据传递
second_date_protocol?.label_text_date_send(date: second_text_field.text!)
//自身消失
self.dismiss(animated: true, completion: nil)
}else{
recive_msg_lable.text = "请输入数据"
}
}
*/