B类的值要传到A类,但是B做不到,所以B需要一个代理去执行这个传值的方法,所以就会委托A去执行
1 首先是协议的声明
位置:
#import
<UIKit/UIKit.h>
//申明一个协议
@protocol SecondViewDelagate < NSObject ]]]]>
@end
2 然后声明协议的类里面定义一个方法让遵守该协议的类去执行
#import
<UIKit/UIKit.h>
//申明一个协议
@protocol SecondViewDelagate < NSObject ]]]]>
//用来刷新新的功能,这个方法(其实就是改变值或者是刷新值得方法)要在遵守这个协议的类里面去实现
- ( void )refresh:( NSString *)sender;
@end
//申明一个协议
@protocol SecondViewDelagate < NSObject ]]]]>
//用来刷新新的功能,这个方法(其实就是改变值或者是刷新值得方法)要在遵守这个协议的类里面去实现
- ( void )refresh:( NSString *)sender;
@end
之后要定义一个代理,在这里要注意代理的位置:
#import
<UIKit/UIKit.h>
//申明一个协议
@protocol SecondViewDelagate < NSObject ]]]]>
//用来刷新新的功能,这个方法要在遵守这个协议的类里面去实现
- ( void )refresh:( NSString *)sender;
@end
@interface ARSecondViewController : UIViewController
//申明一个协议
@protocol SecondViewDelagate < NSObject ]]]]>
//用来刷新新的功能,这个方法要在遵守这个协议的类里面去实现
- ( void )refresh:( NSString *)sender;
@end
@interface ARSecondViewController : UIViewController
//定义一个代理
@property ( nonatomic , weak ) id < SecondViewDelagate > delegate;
@end
之后在B类的.m文件里面通过这个代理去做
-
(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
//刷新,在这里用的作用是将代理派发出去(也就是通过代理去修改A中的textlable的值)
[self.delegate refresh:self.label.text];
}
[super viewWillDisappear:animated];
//刷新,在这里用的作用是将代理派发出去(也就是通过代理去修改A中的textlable的值)
[self.delegate refresh:self.label.text];
}
总的来说就是协议的声明是在@interface上面,声明的时候关键字是@protocol,注意不要拉下@end。而代理的定义是在@interface的下面
之后在A类的。h里面去遵循这个协议
#import
<UIKit/UIKit.h>
#import "ARSecondViewController.h"
@interface ARFirstViewController : UIViewController < SecondViewDelaga
#import "ARSecondViewController.h"
@interface ARFirstViewController : UIViewController < SecondViewDelaga
之后在A类的.m里面定义代理
B *B = 【B alloc】init】;
B。delegate = self;B的委托A去做(在这里A就是self)
之后在A类的.m文件里面去实现协议里面的方法
- (void)refresh:(NSString *)sender{
self.label.text = sender;
}