在两个界面之间传值(代理)
1.正向传值
- 记得在被传入值的文件中声明一个公开的属性用于接收传过来的值
- 在适当的时机把要传过去的值赋给这个公开的属性,一般在推出这个界面的方法中
- 把公开属性的值赋予需要用的地方
2.反向传值
- 委托方:
- a.定义一个公开的协议
- b.声明一个公开的delegate属性
- c.在适当的时机给代理发送消息
委托方.h文件
#import <UIKit/UIKit.h>
@protocol relect <NSObject>
-(void)lastToFirst:(NSString *)text;
@end
@interface OtherController : UIViewController
@property(nonatomic,strong)UITextField *tf;
@property(nonatomic,assign)id<relect>delegate;
@end
委托方.m文件
#import "OtherController.h"
@interface OtherController ()
@end
@implementation OtherController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor greenColor];
_tf = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
_tf.backgroundColor =[UIColor whiteColor];
UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(150, 150, 100, 50)];
[button setTitle:@"即将隐藏" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button addTarget:self action:@selector(clikButton:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
[self.view addSubview:_tf];
}
-(void)clikButton:(UIButton *)button{
NSString *sss = _tf.text;
[self.delegate lastToFirst:sss];
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
- 代理方:
- a. 遵守协议
- b. 把自己设置为代理方
- c. 实现代理方法
代理方.h文件
#import <UIKit/UIKit.h>
@interface CodeController : UIViewController
@property(nonatomic,strong)UITextField *tff;
@end
代理方.m文件
#import "CodeController.h"
#import "OtherController.h"
@interface CodeController ()<relect>
@end
@implementation CodeController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor cyanColor];
_tff = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
_tff.backgroundColor =[UIColor whiteColor];
UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(150, 150, 100, 50)];
[button setTitle:@"即将弹出" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button addTarget:self action:@selector(clikButton:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
[self.view addSubview:_tff];
}
-(void)clikButton:(UIButton *)button{
OtherController *othercontroller = [[OtherController alloc] init];
othercontroller.delegate = self;
othercontroller.view.backgroundColor = [UIColor grayColor];
othercontroller.tf.text = _tff.text;
[self presentViewController:othercontroller animated:YES completion:^{
NSLog(@"弹出完毕");
}];
}
- (void)lastToFirst:(NSString *)text{
_tff.text = text ;
}
@end
网友评论