您的位置:首页 > 移动开发 > Swift

swift2.0 用闭包表达式 代替 protocol 传值回调

2015-10-15 18:54 337 查看
在oc 中经常用到blcok 代替 prtocol 来进行回调 代码更加简洁,但是在swift 中我们通常会用 闭包表达式来进行回调传值,基础语法请百度自行补脑。

上面的博客中自定义了AlertView 用 protocol 进行了回调

代码如下

@objc protocol SwiftCustomAlertViewDelegate : NSObjectProtocol{

optional func  selectOkButtonalertView()

optional func  selecttCancelButtonAlertView()

}


if delegate?.respondsToSelector(Selector("selecttCancelButtonAlertView")) == true {

print("cancelDelegate")

delegate?.selecttCancelButtonAlertView!()
}


if delegate?.respondsToSelector(Selector("selectOkButtonalertView")) == true {

delegate?.selectOkButtonalertView!()
}


下面用闭包表达式代替他们,先定义俩哥哥闭包表达式的变量

//没有回调
var clickedCancelButtonAction:((Void)->(Void))?
//回调button tag
var clickedOkButtonAction:((buttonTag:NSInteger)->(Void))?


if clickedCancelButtonAction != nil {

clickedCancelButtonAction!()

}

if clickedOkButtonAction != nil {

clickedOkButtonAction!(buttonTag:button.tag)

}


在调用的控制器里接受

let alertView = SwiftCustomAlertView(title:"swift", message:"custom swift alert", delegate: self)
alertView .show();

alertView.clickedCancelButtonAction = {

print("selectCancel")
}

alertView.clickedOkButtonAction = {(buttonTag)->Void in

print("Button tag \(buttonTag)")
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift 闭包