整理一下 通知传值 Block传值
Posted 宁静暖风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整理一下 通知传值 Block传值相关的知识,希望对你有一定的参考价值。
Block:
一、
(1)
在需要传值的界面定义属性
// 点击collectionViewCell的回调 @property (nonatomic, copy) void(^DidcollectionClick)(NSIndexPath *indexPath);
在按钮或者手势 或者代理方法中 执行block
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
//这里执行block self.DidcollectionClick(indexPath); }
(2)
在接收界面 中
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (tableView.tag == 1) { ManageMoneyViewTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([ManageMoneyViewTableViewCell class])]; // 接收block 传过来的值 cell.DidcollectionClick = ^(NSIndexPath *indexPath) { NSLog(@"%ld",(long)indexPath.row); }; cell.dataArray = self.bankListdataArray; return cell; } if (tableView.tag == 2) { ManageMoneynewsTableViewCell *cell = [[ManageMoneynewsTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ManageMoneynewsTableViewCell"]; // cell.dataArray = self.dataArray; return cell; } return nil; }
通知:
一、接收通知的控制器 (监听通知)
- (void)viewDidLoad {// 注册一个通知监听 接收通知 NSNotificationCenter *notiCenter = [NSNotificationCenter defaultCenter]; [notiCenter addObserver:self selector:@selector(receiveNotification:) name:NotificManage object:nil]; } // @selector(receiveNotification:)方法,监听到通知后 执行 - (void)receiveNotification:(NSNotification *)noti { // NSNotification 有三个属性,name, object, userInfo,其中最关键的object就是从第三个界面传来的数据。name就是通知事件的名字, userInfo是一个字典 也可以把数据通过字典传递过来(如果要传的数据多的时候) NSLog(@"%@ === %@ === %@", noti.object, [noti.userInfo objectForKey:@"rowId"], noti.name); } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }
二、发送通知
// 这段代码 发送通知 NSNotificationCenter *postCenter = [NSNotificationCenter defaultCenter]; // 发送通知. postNotificationName必须和接收通知的postNotificationName名一致, object就是要传的值。 UserInfo是一个字典, 如果要用的话,提前定义一个字典, 可以通过这个来实现多个参数的传值使用。 NSMutableDictionary *postDic = [NSMutableDictionary dictionary]; [postDic setValue:[NSString stringWithFormat:@"%ld",(long)indexPath.row] forKey:@"rowId"]; [postCenter postNotificationName:NotificManage object:@"成功" userInfo:postDic];
以上是关于整理一下 通知传值 Block传值的主要内容,如果未能解决你的问题,请参考以下文章
iOS 页面间几种传值方式(属性,代理,block,单例,通知)
iOS 页面间几种传值方式(属性,代理,block,单例,通知)
iOS 页面间几种传值方式(属性,代理,block,单例,通知)