美文网首页
iOS- 属性传值-协议传值-UIViewController

iOS- 属性传值-协议传值-UIViewController

作者: J_HX | 来源:发表于2016-08-15 17:14 被阅读174次
    • 界面通信
      • .属性传值, 一般用于从前往后传值, 并通过该属性进行一系列操作
        • 也从后往前传值(也可以, 但是不推荐这样去使用)
      • . 协议传值(delegate)
          1. 从后往前传值 决定要在后边的类声明协议(最难确定)
          1. 声明delegate @property id<Delegate名> delegate
          1. 在哪签订协议(只要拿到对象, 就可以签订协议)XXX.delegate = self
          1. xxx.delegate = self 会爆黄, 没有签订协议, 签订协议
          1. 签订完协议 , 会爆黄的原因是没有事项协议方法
          1. 但是协议方法没有执行,缺少触发时机在哪里触发协议方法(对应加上判断);
    • 小知识
      关于navigation最终控制器的释放
      navigation中viewController数组, 数组对应的对象会引用计数+1
      当controller入栈时,则被加入数组中,引用计数+1
      只要不出站, 就不会释放
      A -> push -> B
      当B - > pop - >A B出栈, 对应的数组中对应的对象引用计数-1(对 应释放)
    • 上代码:
    • 第一步:
      设置属性去接受传过来的值(在制定协议的方法里设置属性)在.h中设置不能私有制,


      210B9EBF-2443-477B-9A82-A3E8A353C32A.png

      在第一个界面里的push方法里面给属性赋值

    6B9125EB-6272-4E28-8253-F474107FC7DB.png
    • 协议传值
      • 协议传值第一步这定协议和制定协议方法协议方法默认必须实现


        21EBCB47-6673-418F-AFD6-CEC451AEFE29.png
    • 小知识
    给属性命名时不要和系统命名重复
    
    • 第二步声明代理人


      B6317C50-3256-4FD8-A50B-E6F79AC9A05E.png

    代理人语义设置最好用weak

    • 第三步实现代理协议方法
      触发协议方法(判断delegate存不存在,判断delegate类有没有实现协议方法)
    28D24342-CA64-43DB-8EAC-229B7EDDC119.png
    • 第四步 签订代理
    F8BF13D3-AD9D-4781-A4C3-F83084E2D3C2.png
    • 第五步设置代理人
      注意:


      AE72296B-FD55-4501-B849-00518A1EAD89.png
    • 第六一步 实现协议方法
      给属性赋值

    3E430FF3-B180-4B4F-840C-4AE8283F1FA9.png
    • UIViewController
    77098B4C-BA32-4B4F-945D-F7C0FE76C450.png

    相关文章

      网友评论

          本文标题:iOS- 属性传值-协议传值-UIViewController

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