上一篇我们介绍了页面转跳:【swift学习笔记】一.页面转跳的条件判断和传值
这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字,回传到父页面。
我是使用protocol去实现的回传。那让我们来创建一个protocol
import Foundation protocol ValueBackDelegate {
func ValueBack(value: String)
}
protocol可以理解为interface,ValueBack方法就是回传的数据。我们要去找一个类去实现他
就我们的第一个页面,ViewController
class ViewController: UIViewController , ValueBackDelegate
还要实现protocol的方法,我们让textfield去接收回传过来的数据。
func ValueBack(value: String) {
teName.text! = value
}
页面2我们要来一个protocol属性,在返回的时候,我们把传过来的值加上“回传”两个字
并返回到页面1
var valueBackDelegate: ValueBackDelegate? @IBAction func backToParent(sender: AnyObject) {
if let a = valueBackDelegate {
a.ValueBack(receiveName.text! + "回传")
}
self.dismissViewControllerAnimated(true, completion: nil)
}
再回到我们的页面1,我们要把实现了protocol的页面1传给页面2的valueBackDelegate
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "openView" {
if let secondView = segue.destinationViewController as? SecondViewController {
secondView.receivedStr = teName.text!
secondView.valueBackDelegate = self
}
}
}
到这就全部ok,很简单吧。
完整代码:数据回传.zip