swift中的协议代理传值
2016-07-17 本文已影响495人
coder小鹏
协议代理传值一般使用在下级界面往上级界面传值的情况,这里将上级界面设定为A界面,下级界面设定为B界面。传值的具体操作如下:
第一步:在B界面中声明协议,以下三步都是在B界面中进行,代码如下
//协议
protocol SYHDelegate : NSObjectProtocol {
func passValue(value:String)
}
第二步:声明代理,注意需要使用弱引用weak修饰,这样可以避免造成野指针
weak var delegate : SYHDelegate?//声明代理
第三步:开始传值,在返回A界面之前将要传递的值传过去,这里可以加上防崩溃判断,代码如下
if self.delegate != nil {
self.delegate?.passValue("我是要传递的值")
}
第四步:在A界面遵守协议,并且指定代理,一定不要忘记指定代理,否则就不会走代理的回调方法
class ViewController: UIViewController,SYHDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let secondVC = SecondViewController()
secondVC.delegate = self
}
第五步:在A界面执行代理的回调方法,接收传递过来的值即可
func passValue(value: String) {
print(value)
}