//委托实现步骤:
1.
定义协议方法的类 首先得声明协议方法
实现协议方法的类 (代理 ) 需要在自己的类中实现协议方法
2.任何对象 都可以调用协议方法 满足两个条件
1). 实现协议方法
2 ).使用协议方法 把自身传到定义协议方法的类中
步骤 :
1. 声明 协议 方法:(声明协议方法可以带参数 将想要的东西传过去)
//protocol 协议
//@protocol 声明一个协议
//<NSObject>表示这个协议实现了NSObject 协议 类似于类中的继承
@protocol TwoViewControllerdelegate < NSObject >
//@optional 可选的 @required 必选的协议方法
//只是起一个标示的作用 供别人查看的
//定义协议方法的类 只负责协议方法的声明
@optional
-( void )clickedButtonAtIndex: ( int )tag;
@end
2.判断:
//判断我们传过来的对象 能不能响应协议方法 能够响应协议方法 才执行调用协议方法的代码
//对于可选的协议方法 要加下面的判断
//不能响应协议方法的两种情况 1.没有讲对象传过来 2. 使用协议方法的类 没有实现协议方法
//对于必选的协议方法 就不添加下面的判断
if ([ _delegate respondsToSelector : @selector (clickedButtonAtIndex:)]) {
[ _delegate clickedButtonAtIndex :sender . tag ];
}
else
{
//不能响应协议方法
if ( _delegate == nil ) {
NSLog ( @"没有讲对象传过来" );
}
else
{
NSLog ( @"协议方法没有实现" );
}
}
3. 实现
如果想要在实现协议方法的类中 输入协议方法的时候 有提示 可以在该类的.h 文件中导入声明的协议方法的 协议
//注意 : 需要将该类对象传到声明协议方法的类中 即:
1.首先在声明协议方法的.h 文件中描述一个任意类型的属性接收 描述属性的时候 用 assign 是为了防止循环引用
@property ( nonatomic , assign ) id delegate;
2.在实现协议方法中的类中 将对象传过去
vc.
delegate
=
self
;