Swift代理方法的使用

2016-10-28  本文已影响0人  Ice丶泽

开始之前,先普及一下Protocol协议及委托代理(Delegate)传值,不清楚的可以先看看

1.代理方法

这里先上代码了

①创建一个代理方法

protocol FirstViewControllerDelegate{

fun firstDelegate()

}

上面为swift声明的最简单的一种代理格式

@objc protocol FirstViewControllerDelegate: NSObjectProtocol{

optional func firstDelegate(returnString:String)

}

在这个代理的声明中,可以明显看出,增加了一些额外的修饰符

1》引入@objc是为了引入 optional,用 optional 修饰代理方法,那么这个方法就变成可选方法,无论在代理对象中是否实现,都不受影响。
2》引入 NSObjectProtocol 是因为我们如果想用 weak 修饰代理属性,需要继承自这个类,这里有一篇关于 weak 修饰 Delegate,防止循环引用的文章,不明白的可以看看

②声明一个代理对象

 weak var delegate: FirstViewControllerDelegate?

这里用 weak 修饰,防止循环引用的产生

③触发代理事件

 if self.delegate!.respondsToSelector(Selector("firstDelegate:")){
     self.delegate!.firstDelegate!("delegate")
 }

1》self.delegate!.respondsToSelector(Selector("firstDelegate:"))方法来判断是否有对象执行代理事件
2》self.delegate!.firstDelegate("delegate")触发代理事件

④在代理的实现控制器中引入代理

class ViewController: UIViewController,FirstViewControllerDelegate

与 Object-C 不同,只需要“,”添加即可

⑤实现代理方法

    func firstDelegate(returnString: String) {
        print(returnString)
    }

不知道是不是我的打开方式有问题~在 swift 里边,好多 Object-C 里边的智能补全,在这儿都不管用了自己慢慢打吧

好吧,我也是个 swift 小萌新,如果各位亲友好的解决方法,请告知,在这儿提前谢过了
分享一个我学习 swift 的网站,里面包含了swift里边的一些基础知识,有需要的可以看看

swift 学习资料

上一篇 下一篇

猜你喜欢

热点阅读