一赡艰、簡單說明
用storyboard 創(chuàng)建兩個ViewController:A笙瑟,B
屏幕快照 2016-06-16 下午5.32.04.png
注:每個VC上都有一個button亮钦,一個label盏求,一個textFiled
A界面上在textFiled里輸入“我是A”文本后蛤吓,點擊“go to B”按鈕宵喂,跳轉(zhuǎn)到B界面,B界面上label上顯示“我是A”会傲。同理B界面上同樣的操作后锅棕,返回A界面上顯示B的textFiled輸入的文本,這是返回值就需要用代理來實現(xiàn)淌山。
二裸燎、代理的實現(xiàn)過程
1、在BViewController.swift里寫代理
protocol Delegate {
func backWords(words:String)
}
2艾岂、在BViewController.swift再聲明一個代理屬性
//代理屬性
var delegate:Delegate?
3顺少、在AViewController.swift實現(xiàn)代理的方法
在實現(xiàn)方法前,一定要先引用代理
class AViewController: UIViewController,Delegate {}
實現(xiàn)代理方法
/**
實現(xiàn)代理方法
*/
func backWords(words: String) {
self.showTextLabel.text = words
self.bVC?.navigationController?.popViewControllerAnimated(true)
}
4王浴、在A界面跳轉(zhuǎn)到B界面時脆炎,A把自己給代理屬性
/**將自己給代理*/
self.bVC!.delegate = self
三、源代碼附上
1氓辣、AViewController.swift
import UIKit
class AViewController: UIViewController,Delegate {
var bVC:BViewController?
/// 輸入要傳給B的值
@IBOutlet weak var talkToBVC: UITextField!
/// 顯示B返回的值
@IBOutlet weak var showTextLabel: UILabel!
/**
實現(xiàn)代理方法
*/
func backWords(words: String) {
self.showTextLabel.text = words
self.bVC?.navigationController?.popViewControllerAnimated(true)
}
/**
捕獲跳轉(zhuǎn)
*/
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "jump"{
/**
強制轉(zhuǎn)換目標VC為BViewController類型
*/
self.bVC = segue.destinationViewController as? BViewController
/**
將自己給代理
*/
self.bVC!.delegate = self
/**
將A說的在B上顯示
*/
self.bVC!.wordsFromA = self.talkToBVC.text
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
2秒裕、BViewController.swift
import UIKit
protocol Delegate {
func backWords(words:String)
}
class BViewController: UIViewController {
var wordsFromA: String!
@IBOutlet weak var showWordSFromA: UILabel!
//代理屬性
var delegate:Delegate?
//跟AViewController要說的話
@IBOutlet weak var talkToA: UITextField!
/**
點擊Button后觸發(fā)事件,跳轉(zhuǎn)到A界面钞啸,并把textField里的文本几蜻,傳回給A,并在A界面顯示
*/
@IBAction func goToA(sender: AnyObject) {
/**
調(diào)動代理方法 實現(xiàn)傳值
*/
self.delegate?.backWords(self.talkToA.text!)
}
override func viewDidLoad() {
super.viewDidLoad()
self.showWordSFromA.text = self.wordsFromA
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}