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。





版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS学习之——ViewController之间双向传值(反向为代理模式)

下面的代码如下,正向传值是用普通的传值模式,反向传值用的是代理模式。实现代理模式的步骤如下: 代理方: 1.遵守原则 (遵守协议) 2.实现代理方法 (实现协议中的方法) 3.设置委托方的代理人 ...

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

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

【ios】2个viewController之间传值(segue方式)

目前我了解的viewController之间传值有2种方式,一种是segue方式,一种是delegate方式;本文只讲segue方式。 先定义viewController 1简称为A,viewC...

iOS编程——OC viewController 传值常用方法Delegate和Block的使用

写了个例子,简单介绍了下Delegate和Block的使用,注意点都在注释里,直接上代码了: 1.FirstViewController.h: #import @interface First...

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式;2.通知noti...

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault)

原文  http://www.cnblogs.com/JuneWang/p/3850859.html iOS页面间传值的方式(NSUserDefault/Delegate...

iOS NSNotification(通知)传值~demo

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 /** 注意点: 1.看 GIF 效果图.        2.看连线视图的效果图.        3.看实现代码(直接赋值实现效果...

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式;2.通知notifi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS ViewController之间传值方法三(利用NSNotification)
举报原因:
原因补充:

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