一:在视图界面
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