objective-c - 关于iOS的几种传值问题。

 阿花-我们寝室的猫 发布于 2022-10-25 11:28
  • ios
  • 在学习iOS的过程中,困扰我的一个问题就是 控制器页面之间的传值问题,例如顺传、逆传。

    传值的方式有 代理传值、block传值、还有通知传值,有哪位好心大神能给讲一讲。

    1 个回答
    • 顺传一般是直接传值

      代理传值

      A<B-Delegate>//A实现B协议
      
      B //声明协议和方法 声明代理属性
      Delegate->(methodFromB:(B)b value:(obj)obj)//B声明协议方法
      property-weak-deleagte
      
      //在A中
      B.delegate = A;
      
      //当B中发生传值时调用
      B
      [self.delegate methodFromB:self value:obj]
      
      //因为 self.delegate = A
      //A中执行定义的协议方法接收到值
      -methodFromB:(B)b value:(obj)obj   
      

      block传值

      A
      //A中实现B的block的代码块
      B.block = ^(obj){
      
      };
      
      B//声明代码块
      typedef BBlock
      property-block
      
      //当B中调用
      self.block(obj);
      就会调用A中以实现的代码块实现传值
      

      通知传值

      A中接收通知
      NotificationCenter.addobserve(A).name("NAME").selector(noti:)
      -noti:(noti)noti{
      noti.obj//接收到值
      }
      B中发送通知
      NotificationCenter.postName("NAME").obj(obj)
      

      单例传值

      //用单例中的值更新A的值
      A.property = global.singleton.property;
      //B中值改变 把值赋给单例
      global.singleton.property = B.property;
      
      
      2022-10-26 23:21 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有