swift2.0 用闭包表达式 代替 protocol 传值回调
2015-10-15 18:54
337 查看
在oc 中经常用到blcok 代替 prtocol 来进行回调 代码更加简洁,但是在swift 中我们通常会用 闭包表达式来进行回调传值,基础语法请百度自行补脑。
上面的博客中自定义了AlertView 用 protocol 进行了回调
代码如下
下面用闭包表达式代替他们,先定义俩哥哥闭包表达式的变量
在调用的控制器里接受
上面的博客中自定义了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)") }
相关文章推荐
- 深入理解PHP之匿名函数
- Apple Swift学习教程
- Ruby中使用Block、Proc、lambda实现闭包
- LUA中的闭包(closure)浅析
- Lua中的闭包学习笔记
- C#中函数的创建和闭包的理解
- 深入理解javascript作用域和闭包
- javascript作用域和闭包使用详解
- 谈谈JavaScript中的函数与闭包
- 细品javascript 寻址,闭包,对象模型和相关问题
- JavaScript中的闭包原理分析
- 浅谈javascript中的闭包
- javascript 闭包详解
- JavaScript 匿名函数和闭包介绍
- JavaScript 闭包深入理解(closure)
- 深入理解JavaScript 闭包究竟是什么
- JavaScript中的闭包(Closure)详细介绍
- 采用自执行的匿名函数解决for循环使用闭包的问题
- javascript闭包的理解