iOS 页面间几种传值方式(属性,代理,block,单例,通知

iOS 页面间几种传值方式

属性(KVC,KVO),代理(delegate),block,单例,通知(NSNotification)
**应用场景:**第二个视图控制器如何获取第一个视图控制的信息

eg:第二个界面中的lable显示第一个界面的textField中的文本

这就需要用到属性(kvc,kvo)传值,Block传值
页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五种传值方式:
  1. 属性传值

    具体的就是重写get/set 方法,进行赋值
    传入:set 重写set方法 数据模型传递
    传出:get 重写模型数组的getter方法实现懒加载     
    
    • 首先我们建立一个RootViewControllers和一个DetailViewControllers,在DetailViewControllers中声明一个textString属性,用于接收传过来的字符串

    • 同时创建一个Lable用来显示传过来的字符串

    • 在RootViewControllers上引入DetailViewControllers同时声明一个textField属性用来输入字符串

    • 然后在RootViewControllers上我们创建并添加一个button,当点击button时响应相应方法进行视图间的切换完成视图间的传值

        //创建对象, 就为对应属性textString 赋值
    detailVC.textString = self.textField.text;
    
  2. Block传值

    block传值也是从第二个界面给第一个界面传值

    • 首先我们在DetailViewcontrollers的.h文件中,属性
    • 在RootViewControllers的.m文件中,其他不变,在button的响应方法里我们为block属性赋值完成block传值

原理 利用Block的回调

  1. Delegate传值

    RootViewControllers页面push到DetailViewControllers页面,如果DetailViewControllers页面的信息想回传(回调)到RootViewControllers页面,用代理传值,其中DetailViewControllers定义协议和声明代理,RootViewControllers确认并实现代理,RootViewControllers作为DetailViewControllers的代理

首先在DetailViewControllers.h文件中我们创建协议方法

在DetailViewControllers的.m中我们判定代理对象存在时,为其绑定相应方法

RootViewControllers的.m文件中我们指定代理并让其执行代理的方法

单例传值

单例传值(实现共享

通知传值

谁要监听值的变化,谁就注册通知 特别要注意,通知的接受者必须存在这一先决条件

====

具体代码实现在

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值