美文网首页
day11-购物车05-通知的应用

day11-购物车05-通知的应用

作者: js_huh | 来源:发表于2020-07-13 17:51 被阅读0次

购物车01-搭建基本骨架
购物车02-圆角按钮处理
购物车03-显示数据
购物车04-加号减号点击处理

NSNotification - 通知
NSNotificationCenter - 通知中心
模拟通知


是什么?

思路:

  • 为什么点击➕/➖无法改变"总价" ?
    ➕,➖ 在自定义cell里面, "总价"在VC里面
    自定义cell内部,无法拿到VC(控制器)里面的"总价"
  • 如何让自定义cell,拿到VC里面的"总价"?
    • 通知, 代理, KVO 三种方式。
  • 怎么使用通知,来实现改变总价?
    • 点击➕ 按钮时,发出个'通知'
      (Cell里面,发布通知的不同方式: 带userInfo和不带userInfo)
      - (IBAction)plusClick:(id)sender {
      [[NSNotificationCenter defaultCenter]postNotificationName:@"plusNotice" object:nil userInfo:@{@"wine": self.wine}];
      [[NSNotificationCenter defaultCenter]postNotificationName:@"buttonNotice" object: self];
      }
      
    • 在VC中,接收此'通知',改变'总价'
      • "监听通知"写在哪里,需要什么前提呢?
        • 监听通知一定写在"通知发布之前"
        • 监听通知只需要"监听一次"
      • 为什么在 viewDidLoad里面写监听通知 ?
        viewDidLoad初始化界面
        • viewDidLoad方法的特性,在控制器加载完毕后,只调用一次
        • viewDidLoad方法的调用为什么'一定是在通知发布之前呢'?
          • viewDidLoad方法没执行完,是不会存在界面得.
          • 点击➕ 按钮的时候,才发布通知
          • 界面都不存在,怎么会有➕ 按钮。
          • 所以viewDidLoad方法一定是在通知发布之前
      - (void)viewDidLoad {
      //[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeTotal:) name:@"plusNotice" object:nil];
        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeTotal:) name:@"buttonNotice" object:nil];
       }
      
      -(void)changeTotal:(NSNotification *) notice {
      NSDictionary * dict = notice.userInfo;
      Wine * wine =  dict[@"wine"];
      int total = wine.money.intValue * wine.count;
      self.totalLabel.text = [NSString stringWithFormat:@"%d",total];
      }
      
      -(void)changeTotal:(NSNotification *) notice {
      WineCell* wineCell = notice.object;
      Wine * wine = wineCell.wine;
      int total = wine.money.intValue * wine.count;
      self.totalLabel.text = [NSString stringWithFormat:@"%d",total];
      }
      

好处

  • VC 能够监听Cell的方法
  • 自定义Cell不依赖于VC
  • 解除了Cell和当前VC的耦合度 -- 解耦

相关文章

  • day11-购物车05-通知的应用

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理 NSNotifi...

  • day11购物车10-细节完善

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11购物车08-代理的简单实现

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11-购物车06-清空和购买

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11购物车07-KVO的应用

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11购物车09-代理设计模式

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11- 模拟通知

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理 NSNotifi...

  • TensotFlow 应用实例:05- activation f

    TensotFlow 应用实例:05- activation function激活函数 本文是我在学习Tensot...

  • 05-购物车功能实现

    一 定义模型类 定义三个数据,分别是做user,goods,count的外键model. pyclass Cart...

  • vue指令应用

    应用1: 购物车 代码如下: 应用2: 选项卡 代码如下: 应用3: 用户管理 代码如下:

网友评论

      本文标题:day11-购物车05-通知的应用

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