iOS通知中心传值使用

主要在一些界面之间跨度大的界面使用比如要从C界面传到A界面这样或者多个地方需要执行一个操作的时候。通知最好是在viewDidLoad这个方法中创建

首先在需要传送得界面C界面创建通知
//创建通知
            NSDictionary * dic = @{@"zhuce":@YES};
            [[NSNotificationCenter defaultCenter] postNotificationName:@"approveSelf" object:nil userInfo:dic];
这只能传一个字典,userInfo的返回就是一个字典

这是第二步啦,在接受通知的地方也创建通知接受的方法

接受通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(approveSelf:) name:@"approveSelf" object:nil];//传值通知创建好啦
//实现通知的方法
-(void)approveSelf:(NSNotification *)notification{
    BOOL approveBool = notification.userInfo[@"zhuce"];
    if ( approveBool == YES) {
        [self verificationType:Verification_idCardLight];
    }
}

最后一步不要忘记哦,移除通知

//最好在dealloc这个方法中移除通知
-(void)dealloc{
  //第一种方法.这里可以移除该控制器下的所有通知
     // 移除当前所有通知
    NSLog(@"移除了所有的通知");
    [[NSNotificationCenter defaultCenter] removeObserver:self];

     //第二种方法.这里可以移除该控制器下名称为zhuce的通知
    //移除名称为zhuce的那个通知
    NSLog(@"移除了名称为zhuce的通知");
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"zhuce" object:nil];
}

这里注意:如果dealloc方法不调用,说明当前有变量没有被释放,这时如果找不到问题所在,也可以重写控制器的返回按钮backBarButtonItem事件,在返回的时候进行移除通知操作

//返回上一层界面事件
-(void)backPreviousViewControllerAction{

     //第一种方法.这里可以移除该控制器下的所有通知
     // 移除当前所有通知
    NSLog(@"移除了所有的通知");
    [[NSNotificationCenter defaultCenter] removeObserver:self];

     //第二种方法.这里可以移除该控制器下名称为tongzhi的通知
    //移除名称为tongzhi的那个通知
    NSLog(@"移除了名称为tongzhi的通知");
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"tongzhi" object:nil];

    // 返回上一层界面
    [self.navigationController popViewControllerAnimated:YES];

}

配个图


timg.jpeg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容