iOS ViewController之间传值方法三(利用NSNotification)

原创 2015年11月20日 23:48:38
3.利用NSNotification在两个或多个ViewController之间传值
在A页面

    //注册通知

    [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(click:)name:@"mynotification"object:nil];


    UIButton *jumpBtn = [[UIButtonalloc]initWithFrame:CGRectMake(50,100, 200, 50)];

    jumpBtn.backgroundColor = [UIColorredColor];

    [jumpBtn setTitle:@"click..."forState:UIControlStateNormal];

    [jumpBtn addTarget:selfaction:@selector(clickBtn)forControlEvents:UIControlEventTouchUpInside];

    [self.viewaddSubview:jumpBtn];

    

------------------------------------------------------

-(void)click:(NSNotification*)text{

    NSString *str = text.userInfo[@"1"];

    NSLog(@"---------------%@",str);

}

-(void)clickBtn{

    //PS:UIViewController 跳转方法有两种,1.利用UIViewController自身的presentModalViewController,进行跳转;调用dismissModalViewControllerAnimated方法可以返回。2.利用UINavigationController,调用pushViewController,进行跳转;这种采用压栈和出栈的方式,进行Controller的管理。调用popViewControllerAnimated方法可以返回.

    TwoViewController *vc = [[TwoViewControlleralloc]init];

    [selfpresentViewController:vc animated:YEScompletion:nil];


// Or   [self.navigationController pushViewController:vc animated:YES];

}


  在B页面

    NSDictionary *dic = [[NSDictionaryalloc]initWithObjectsAndKeys:@"this",@"1",@"is",@"2",@"a",@"3",@"dictionary",@"4",nil];

    //创建通知

    NSNotification *myNotification = [NSNotificationnotificationWithName:@"mynotification"object:nil userInfo:dic];

    //通过通知中心发送通知

    [[NSNotificationCenterdefaultCenter]postNotification:myNotification];


个人理解,在A页面要先注册通知才能接收到B页面传过来的值。通知注册就好像初始化一样,如果在A页面直接创建通知,在B页面再注册是无法传值的。

移除通知:removeObserver:和removeObserver:name:object:

其中,removeObserver:是删除通知中心保存的调度表一个观察者的所有入口,而removeObserver:name:object:是删除匹配了通知中心保存的调度表中观察者的一个入口。

这个比较简单,直接调用该方法就行。例如:

[[NSNotificationCenter defaultCenter] removeObserver:observer name:nil object:self];

注意参数notificationObserver为要删除的观察者,一定不能置为nil。





版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuepan1994/article/details/49954673

IOS利用临时变量传值

  • 2013年07月14日 13:54
  • 41KB
  • 下载

iOS UIViewController之间的传值方式之一:委托代理

iOS开发中经常需要在2个控制器之间传递数值,例如:aViewController上有一个label标签,bViewController有一个TextField等待用户输入,并且将用户输入的内容显示到...
  • gongqiuwei08
  • gongqiuwei08
  • 2015-01-23 00:19:54
  • 710

iOS 不同界面(ViewController)之间传值

今天遇到一个问题:如何在多个viewController 之间进行传值,我有A、B、C三个 view,三个 view 均在同一 Navigation Controller 容器中,关系如下图: ...
  • shuai265
  • shuai265
  • 2016-05-29 22:41:25
  • 1018

ios实现viewcontroller切换传值的三种方法

  • 2015年07月09日 19:02
  • 144KB
  • 下载

IOS UIViewController相互传递数据

UIViewController之间相互传递数据有以下几种: 第一、利用UIViewController的初始化函数来传递。 第二、利用委托代理。 第三、消息通知。 第四、利用UI布局来传递数据。 第...
  • u013954399
  • u013954399
  • 2015-07-04 16:03:12
  • 999

iOS ViewController之间传值方法五(使用block)

5.使用block在ViewController之间传值 在B页面 .h文件 @interface TwoViewController : UIViewController //定义一个blo...
  • xuepan1994
  • xuepan1994
  • 2015-11-24 23:20:24
  • 701

IOS—两个ViewController间传值(逆向传值)

上一篇 两个ViewController间传值中说明了如何从A传值到B,这次要讲的是如何从A进入B,在B输入值后回传给A,这类似于Android中的利用Activity的onActivityResul...
  • qq_17007915
  • qq_17007915
  • 2015-10-22 11:32:00
  • 899

ViewController之间通信,传递参数

从FirstViewController跳转到SecondViewController,当从SecondViewController返回时,如果想把数据回传给FirstViewController,可...
  • u013993802
  • u013993802
  • 2016-10-13 11:38:06
  • 1053

iOS ViewController之间传值方法四(利用Delegate)

3.利用Delegate在两个或多个ViewController之间传值 在A界面       .h文件 @protocol secondViewDelegate -(void)passView...
  • xuepan1994
  • xuepan1994
  • 2015-11-22 20:16:03
  • 1222

Swift编程(二):UIViewController之间的传值以及闭包回调传值

知识背景: 在日程开放中页面传值是最为常见的,(具体动画特效见我的我的GitHub ) 效果图 学习目标: 学习闭包的使用学习页面传值FirstViewController --> Secon...
  • u012678420
  • u012678420
  • 2016-07-14 11:37:07
  • 1194
收藏助手
不良信息举报
您举报文章:iOS ViewController之间传值方法三(利用NSNotification)
举报原因:
原因补充:

(最多只允许输入30个字)