IOS代理模式
代理困扰了很久,一直看概念,看网上的博客发现不是自己要的!我想要的是一个代理流程。
第一个界面的名字,姑且我们叫apple吧!第二个界面的名字叫banana;在banana中的值想传给apple,这时候就要用到代理了,可以用其他的传值吗?可以,不过我们先研究代理传值。
banana传值,banana就要找个代理。
一.banana
第一步:
在banana.h中定义代理
@protocol BananaDelegate <NSObject>
// 声明一个代理方法:默认是@require,必须实现代理方法;@optional,非必须实现。
- (void)bananaDelegate:(BananaViewController *)controller bananaModel:(BananaModel *)model;
@end
@interface BananaViewController : UIViewController
@property (nonatomic, strong) id<BananaDelegate> delegate;
@end
第二步:
在banana.m中返回apple中需要的代码
- (IBAction)BackButtonClicked:(id)sender
{
BananaModel *m = [[BananaModel alloc] init];
// 给m赋值吧!假如:
m.name = @"张三";
// 判断是apple中否实现代理方法
if([self.delegate respondsToSelector:@selector(bananaDelegate:bananaModel:)])
{
[self.delegate bananaDelegate:self bananaModel:m];
}
[self.navigationController popViewControllerAnimated:YES];
}
二.apple
第一步:
@interface AppleViewController ()<BananaDelegate>
@end
第二步:
设置代理
controller.delegate = self;
第三步:
实现代理方法
- (void)bananaDelegate:(BananaViewController *)controller bananaModel:(BananaModel *)model
{
// 这是得到传来的值,你完成你想要的任务吧!
}
只是看没有啥用,多写几遍直至熟练!然后,就能领会到了!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。