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

  • 界面通信
    • .属性传值, 一般用于从前往后传值, 并通过该属性进行一系列操作
      • 也从后往前传值(也可以, 但是不推荐这样去使用)
    • . 协议传值(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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,396评论 0 3
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,196评论 6 13
  • 感恩早起的太阳 感恩给我带来快乐的啊峰 感恩家人一切安好 感恩感谢
    ouka阅读 104评论 0 0