美文网首页
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

    界面通信.属性传值, 一般用于从前往后传值, 并通过该属性进行一系列操作也从后往前传值(也可以, 但是不推荐这样去...

  • iOS中2种正向传值,6种反向传值方式归纳总结

    1、属性传值 前向后传值。2、协议传值3、Block传值 代替协议代理传值,主要时间点问题。4、单...

  • iOS_UI_08_界面通信

    第八章 界面通信 一、属性传值 二、协议传值 三、Block传值

  • iOS 开发中 代理传值

    A 向 B 传值: A要传值,就要告诉别人我可以传值。 A 要声明这个协议,定义遵守该协议的delegate属性。...

  • UI总结-界面传值

    UI总结-界面传值(属性传值,协议传值,block传值,通知中指传值) 在编程过程中,界面传值是很重要的一部分,常...

  • 【原】swift基础篇之页面传值

    这里讲的传值方式主要有四种:页面属性传值、NSUserDefaults、协议传值、闭包block传值。均以两个控制...

  • 代理

    一:代理传值 A跳转到B,若传值,直接属性即可,但是B返回到A若传值该怎么传值呢? 代理: A的声明中 建立协议 ...

  • iOS的五种传值

    前言 iOS常见的五种传值分别为属性传值,通知传值,代理传值,block传值,单例传值 属性传值 用于正向传值,简...

  • Swift常用的界面传值(属性传值、协议传值、闭包传值)

    1、属性传值 属性传值多用于正向传值(A->B) 2、代理传值 代理传值多用于反向传值(B->A) 3、闭包传值 ...

  • iOS的5种传值

    (-)属性传值 属性传值(场景)一般用于正向传值,即第一个界面传值给第二个界面 属性传值是这几大传值中最简单的传值...

网友评论

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

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