首先搞清楚代理是干嘛的,对,代理就是用来传值的
传值?主要是怎样把值传过去
假设有A和B两个界面,A是push到B界面的,需要在A界面使用B界面的一个数值,如何办?(因为在POP回去的时候B界面已经被销毁了,所以传回去的是nil值)
*这时就便可以用代理了( 这里主要举个例子,一般没人这么用代理)
传值,听名字就知道了,必须有个值需要传,那么值在哪个界面呢?对,就在B界面,所以就可以在B界面的BView.h文件写入代理了
@class BView;
@protocol BViewDelegate <NSObject>
- (void)returnNum:(NSInteger)num;
@end
@interface BView : UIViewController
@property (nonatomic, assign) id <BViewDelegate> delegate;
@end
- (void)btnClick:(UIButton*)btn{
if ([self.delegate respondsToSelector:@selector(returnNum:)]) {
[self.delegate returnNum:btn.tag];
}
}
传完值,可以使用该值了,在A界面中,添加B界面的代理,并实现代理方法
@interface AView : UIViewController()<BViewDelegate>
@end
@implementation AView
- (void)viewDidLoad{
BView *vc = [[BView alloc]init];
vc.delegate = self;
}
- (void)returnNum:(NSInteger)num{
}
@end