• iOS多视图传值方式之通知传值(NSNotification;NSNotificationCenter)


    • iOS传值方式之5:通知传值

    • 第一需要发布的消息,再创建NSNotification通知对象,然后通过NSNotificationCenter通知中心发布消息(NSNotificationCenter单例)

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

    {

        // 创建需要传递的参数

        NSDictionary *dic = @{

                              @"name":@"coputer",

                              @"message":@"using"

                              };

        

        // 创建通知

        NSNotification *note = [NSNotification notificationWithName:@"tongzhi" object:nil userInfo:dic];

        

        // 通过通知中心发送消息:Xcode的单例

        [[NSNotificationCenter defaultCenter] postNotification:note];

        

        // 推到下一页:即接收通知的对象(使用的是模态视图)

        [self presentViewController:[PPFViewController new] animated:YES completion:nil];

    }


    • 在发送通知后,在所要接收的控制器中注册通知监听者,将通知发送的信息接收
    • 接收通知也有三步:首先需要注册通知,

    - (void)viewDidLoad

    {

        [super viewDidLoad];

          // 注册通知

           [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reserve:) name:@"tongzhi" object:nil];

    }

    // 反馈通知:打印通知内容

    - (void)reserve:(NSNotification *)messgae

    {

        NSLog(@"收到通知");

        NSLog(@"%@", messgae.userInfo);  //形参是NSNotification类型对象指针,因此可以访问其属性

    }

    // 移除通知

    - (void)dealloc

    {

    // ARC可以重写dealloc但不能写[super dealloc]; 因为是自动内存管理

        [[NSNotificationCenter defaultCenter] removeObserver:self name:@"tongzhi" object:nil];

    }


    • 注意:

    其中,removeObserver:是删除通知中心保存的调度表一个观察者的所有入口,

    而removeObserver:name:object:是删除匹配了通知中心保存的调度表中观察者的一个入口。

    注意参数notificationObserver为要删除的观察者,一定不能置为nil。

  • 相关阅读:
    unity free asset
    Unity3d Serialize问题
    野蛮能带来繁荣是怎么回事?
    如何给unity3d工程加入依赖的android工程
    unity3d 导入google play services插件工程
    NGUI中UILabel使用url标签的一个bug
    数据结构
    git命令
    面试算法经典问题
    Http Client 源码分析
  • 原文地址:https://www.cnblogs.com/pruple/p/5281051.html
Copyright © 2020-2023  润新知