美文网首页
【iOS】通知传值

【iOS】通知传值

作者: irenb | 来源:发表于2017-06-26 11:00 被阅读0次

    一、应用场景:

    通知中心传值,可以跨越多个页面传值, 一般也是从后面的页面传给前面的页面。

    二、实现思路:

    第三个界面的值传给第一个界面。

    1. 在第一个界面建立一个通知中心, 通过通知中心,注册一个监听事件。
    2. 在第一个界面中,设置接收到通知的事件。
    3. 在第一个界面中的dealloc中, 将通知中心remove掉。
    4. 在第三个界面中, 建立一个通知中心, 通过通知中心, 发送通知(发送通知的过程就是传值的过程,将要传输的值作为object的值传给第一个界面 。

    三、代码片段:

    第一界面

    // 通知中心是个单例
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    // 注册一个监听事件。第三个参数的事件名, 系统用这个参数来区别不同事件。
    [center addObserver:self selector:@selector(receiveNotification:) name:@"getValue" object:nil];
     
    // @selector(receiveNotification:)方法, 即受到通知之后的事件
    - (void)receiveNotification:(NSNotification *)sender {
        // NSNotification 有三个属性,name, object, userInfo,其中最关键的object就是从第三个界面传来的数据(传一个参数)。name就是通知事件的名字, userInfo一般是事件的信息(传多个参数)。
        NSLog(@"%@,%@,%@", sender.name, sender.object, sender.userInfo);
     }
         
    // 第一界面中dealloc中移除监听的事件
    - (void)dealloc {
        // 移除当前对象监听的事件
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    }
    

    第二界面

    // 创建一个通知中心
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    NSDictionary *dic = @{@"参数1": @"值1", @"参数2":@"值2", ...};
    // 发送通知. 其中的Name填写第一界面的Name, 系统知道是第一界面来相应通知, object就是要传的值。 UserInfo是一个字典, 如果要用的话,提前定义一个字典, 可以通过这个来实现多个参数的传值使用。
    [center postNotificationName:@"getValue" object:nil userInfo:dic];
    

    相关文章

      网友评论

          本文标题:【iOS】通知传值

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