Snail—UI学习之自定义通知NSNotification

发布时间:2017-09-12 15:06:45
Snail—UI学习之自定义通知NSNotification

背景是:一个界面跳转到第二个界面 然后 第一个界面发了一个通知 然后第二个界面收到这个通知后 把里面的数据取出来

在RootViewController.m中写入下面代码

#import WJJRootViewController.h #import WJJFirstViewController.h @interface WJJRootViewController (){ UITextField * _textField; } @end @implementation WJJRootViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor greenColor]; // Do any additional setup after loading the view. _textField = [[UITextField alloc] initWithFrame:CGRectMake(30, 40, 240, 30)]; _textField.borderStyle = UITextBorderStyleRoundedRect; _textField.placeholder = @请输入:; _textField.clearButtonMode = UITextFieldViewModeAlways; _textField.keyboardType = UIKeyboardTypeDefault; _textField.returnKeyType = UIReturnKeyGo; //设置textField的代理 要让viewController为他收起键盘 _textField.delegate = self; [self.view addSubview:_textField]; [self createButton]; } - (void)createButton{ UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem]; button.frame = CGRectMake(20, 80 , 50, 50); button.backgroundColor = [UIColor blackColor]; [button setTitle:@点我 forState:UIControlStateNormal]; [button addTarget:self action:@selector(nextPage) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } - (void)nextPage{ //新建一个界面 WJJFirstViewController * firstViewController = [[WJJFirstViewController alloc] init]; //设置反转风格 firstViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; //从第一个界面转到第二个界面 有动画 [self presentViewController:firstViewController animated:YES completion:nil]; //发一个通知 如果第二个界面接收这个通知的话,就会得到通知里面的数据 //写在跳转界面之后 这样跳转后第二个界面才可以接收 [[NSNotificationCenter defaultCenter] postNotificationName:@1523 object:_textField.text]; }

//那么在第二个界面中就要接收这个通知的话 代码如下

#import WJJFirstViewController.h @interface WJJFirstViewController (){ UILabel * _label; } @end @implementation WJJFirstViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. _label = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 200, 50)]; _label.backgroundColor = [UIColor grayColor]; [self.view addSubview:_label]; //get:方法是接收到通知后 做得操作 name:类似频道 在这个频道上就能接收到这个通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(get:) name:@1523 object:nil]; } - (void)get:(NSNotification *)noti{ //得到通知里面的对象 id obj = noti.object; NSString * str = (NSString *)obj; _label.text = str; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
效果如下

\

\

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站建设 https://www.feimao666.com