Swift3.0 中代理的使用方法

一:在视图界面

1.制定协议(不写NSObjectProtocol暂时不会报错,但是写属性是无法写weak)

protocol DelegateName:NSObjectProtocol {
    //设置协议方法
    func method()
}

如果是可选方法,需要在protocol和func前都加上@objc

@objc protocol DelegateName:NSObjectProtocol {
    //设置协议方法
    @objc func method()
}

// 在Swift中,制定协议需要遵守NSObjectProtocol协议,除了类可以遵守协议,结构体也可以遵守协议
// 在OC中我们制定协议,通常继承自NSObject,可以这样理解,所有继承自NSObject的对象都可以实现协议方法(同样我们也可以指定哪些对象可以实现我们制定的协议方法)

2.用weak定义代理

weak var delegate:DelegateName?

3.判断代理是否存在,让代理去执行方法

func clickButton() {
    // '?'代替了responsed
    delegate?.method()
    // 如果方法是optional修饰的,则方法后也添加?
    delegate?.method?()
}
二:在控制器界面

1.遵守协议

class ViewController:UIViewController,DelegateName { //遵守协议

2.设置代理为self

customView?.delegate = self

3.实现协议方法

func method() {
    print(#function)
}


强烈推荐:超简单!!! iOS设置状态栏、导航栏按钮、标题、颜色、透明度,偏移等

https://github.com/wangrui460/WRNavigationBar
https://github.com/wangrui460/WRNavigationBar_swift



欢迎关注我的微博:wangrui460

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容