二、视图间传值方法之通知
在上一篇讲了常用方法中有一种叫做通知的方法传值
在故事板里面直接拖一个导航控制器,两个视图控制器。现在要把视图控制器2里面的textfield 输入的内容返回到视图控制器1的lable里面。
直接看代码吧!
视图控制器1:
.m文件:
@interface FirstController ()
@property (weak, nonatomic) IBOutlet UILabel *name;
@end
@implementation FirstController
//按钮动作的方法
- (IBAction)buttonAction:(UIButton *)sender {
[self performSegueWithIdentifier:@"push" sender:nil];
}
-(void)viewDidLoad
{
//创建通知中心并监视 通知名为“text”的发送来的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(text:) name:@"text" object:nil];
}
//参数text 为通知中心收到消息的那个发送者(即名字“text”的通知)
-(void)text:(NSNotification *)text
{
_name.text = text.userInfo[@"textName"];
}
@end
视图控制器2:
.m文件:
@interface SecondController ()
@property (weak, nonatomic) IBOutlet UITextField *nameText;
@end
@implementation SecondController
-(void)viewWillDisappear:(BOOL)animated
{
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:_nameText.text,@"textName", nil];
//创建了一个通知 并向通知中心发送了一个名字为@“text”的通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"text" object:nil userInfo:dic];
}
@end
由于通知中心是一个单列,[NSNotificationCenter defaultCenter] 创建的通知中心都是一个通知中心。当视图将导航控制器pop的时候,视图2将消失 的时候给通知中心发送消息,通知中心在视图控制器1中添加了监测名字为“text”的通知发送的消息,然后把该通知携带的参数dic 返回到视图控制器1中。
源代码在我的资源里面是免积分下载的,欢迎下载。下载地址:http://download.csdn.net/detail/moxi_wang/9040615