###导语:
慢慢地发现自己三天之内不在简书发表文章就会浑身难受,像是中毒了一般,而我又不愿意去写一些没有质量的文章,怎可以对读者不负责?就像对自己不负责一样!我可不愿意。。。 对自己的要求是简洁代码,做到注释明了接地气,让刚入门的开发人员一看就可以上手,而不用走太多的弯道。正如一位名人说的话:“一个能让清洁阿姨看得懂他代码的程序员,才是真正的程序员。”而我的目标便是如此。会写出更多的好文章吗?谁知道呢?走着瞧吧。
###一、代理传值 ####1.在发送页面的.h中:
#import <UIKit/UIKit.h>
/**
1. 制定代理,实现传值 名称命名规范:本类名+Delegate
*/
@protocol TwoViewControllerDelegate <NSObject>
/**
2. 定义必须实现的协议方法,用来传值
*/
@required
-(void)changeTextField:(UITextField*)textField;
@end
@interface TwoViewController : UIViewController
/**
3. 定义一个weak属性的代理
*/
@property (nonatomic,weak)id<TwoViewControllerDelegate>delegate;
@end
复制代码
####2.在发送页面的.m中
//发送代理,把文本框的值传过去(传值逻辑)
[self.delegate changeTextField:self.twoTF];
复制代码
####3.在接收页面的.m中
#import "OneViewController.h"
#import "TwoViewController.h"
/**
1.遵守协议
*/
@interface OneViewController ()<TwoViewControllerDelegate>
@property (weak, nonatomic) IBOutlet UITextField *oneTF;
@end
@implementation OneViewController
- (IBAction)clicked:(UIButton *)sender {
TwoViewController *vc = [TwoViewController new];
vc.delegate=self;//3.设置自己为代理(挺关键的一步)
[self.navigationController pushViewController:vc animated:YES];
}
//2.实现协议方法
-(void)changeTextField:(UITextField *)textField{
self.oneTF.text=textField.text;
}
复制代码
小结: 小伙伴们有没有发现其中的逻辑是不是很眼熟?是不是很类似我们设置UITableView的时候加上的协议方法呀!也是要“设置自己为代理,实现协议所必需实现的方法”,其中的道理应自己领会。
###二、单例传值 ###三、Block传值 ###四、方法传值 ###五、属性传值 ###六、通知传值