美文网首页
iOS通知中心传值使用

iOS通知中心传值使用

作者: if_you_like | 来源:发表于2017-08-16 11:20 被阅读24次

    主要在一些界面之间跨度大的界面使用比如要从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

    相关文章

      网友评论

          本文标题:iOS通知中心传值使用

          本文链接:https://www.haomeiwen.com/subject/lqfirxtx.html