Closure
2016-05-09 本文已影响15人
FishSha
闭包回调在于从A跳转到B时,将对A赋值的函数对象传给B,在需要赋值的时候,B调用该函数对象即可。
E.G.
//A类,申明一个赋值方法
func setName(textField:String) {
self.textField1.text= textField
}
//B类,申明一个与A类相同的闭包类型
typealias closure = (name:String)->Void
var closureType:closure?
override func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject?) {
if segue.identifier=="toBViewController"{
let vc2: ViewController2= segue.destinationViewController as! ViewController2
//A类,在跳转的时候将B类的闭包赋值A类上面的赋值方法
vc2.closureType = setName
}
}
//在B类需要赋值给A类的时候直接调用对应的closure方法即可
@IBActionfunctoViewController3(sender:UIButton) {
closureType!(name:"zhangsan")
self.dismissViewControllerAnimated(true, completion:nil)
}