【第22期】观点:IT 行业加班,到底有没有价值?

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之间传值方法四(利用Delegate)

3.利用Delegate在两个或多个ViewController之间传值 在A界面       .h文件 @protocol secondViewDelegate -(void)passView...

iOS ViewController之间传值方法二(利用NSUserDefaults)

2.利用NSUserDefaults在两个ViewController之间传值 iOS中利用NSUserDefaults在两个或多个界面之间传值。其中NSUserDefaults支持的数据类型有:NS...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

ios开发学习笔记(这里一定有你想要的东西,全部免费

1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用) 其实在代码里还是可以设置的,那就是删除背景view [[self.searchBar.subviews objectAtIndex:0] removeF...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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