iOS传值

一、dataCenter单例传值

一、目的要求:利用单例传值修改界面1的背景颜色

二、单例传值的特点:每次修改和拿到的都是同一个值,用于多个界面之间信息共享,相当于C语言的全局变量。单例参加一般以shared \ default开头命名。单例更为详尽的用法和注意事项,将在往后的多线程中细说。

三、单例传值的实现:

1、准备步骤

1.1.新建一个工程

1.2.新建一个类DetaCenter,这里继承的是NSObject

2、单例实现

2.1.DetaCenter.h文件里公开一个单例方法(一般是类方法),并且声明一个UIColor类型的成员变量存储背景颜色的值(这个按实际需求声明自己需要的类型),因为UIColor是UIKit类里的,所有要import <UIKit.UIKit.h>头文件

详细代码如下:

2.2DetaCenter.m文件里实现单例方法(创建单例)

//在堆中声明一片dataCenter的内存空间

//特点:不会被自动回收,用static修饰,静态

代码如下:

2.3ViewController.m文件中包含DetaCenter.h头文件,并且对单例进行赋值和获取

代码如下:

二、通知传值

一、目的要求:利用通知传值修改界面1的背景颜色

二、通知传值的特点:多个VC注册通知,单个VC发送通知时,注册通知的vc都响应方法(一对多的传值方式)

三、简单步骤:(先监听,再发送)

界面1注册通知:

//添加到通知中心,使用:传递通知(NSNotification)本身给方法[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(notiMethod:) name:@"changeColorNoti"object:nil];

界面2发送通知:

//用post方法使name相同的通知作响应[[NSNotificationCenterdefaultCenter]postNotificationName:@"changeColorNoti"object:[UIColorblackColor] userInfo:nil];

四、详细代码

界面1 .m文件

界面2 .m文件

三、协议代理传值

一、目的要求:利用协议代理传值修改界面1的背景颜色

二、协议代理传值的特点:例如修改背景颜色,可以设置一个专门的代理类来实现,其他需要修改背景颜色的所有类都可以与其签订协议来修改自己的背景颜色--封装的思想

三、步骤:

3.1 在界面2中(协议代理类)制定协议,并声明协议方法,但不实现,谁遵守协议谁实现

3.2 在界面2中(协议代理类)公开一个携带协议的id指针

代码如下:

3.3 在界面1 中(遵守协议类)声明界面2(声明协议类)的头文件,并且遵守协议

3.4 在界面1中(遵守协议类)进行协议的关联

3.5 在界面1中(遵守协议类)实现协议方法

代码如下:

3.6 在界面2的.m(协议代理类)的某个状态中调用协议方法,传入参数

代码如下:

四、block传值

一、目的要求:利用block传值修改界面1的背景颜色

二、block传值的特点:block传值是传一块待执行的代码区域,待激活该代码块区域是才会执行,block传值是现在苹果官方推荐的,也是将来的一种趋势

三、步骤:本人对block理解不深,就不做多描述以免误导大家,待将来理解深刻了,在回来补齐其中知识点,这里直接贴上代码。

VC:

SVC.h

SVC.m

时间: 2024-10-06 12:56:28

iOS传值的相关文章

工作记录8:iOS 传值问题总结(7种传值完美介绍)

1.属性传值 前向后传值. 记住: /* 1: 属性传值第一步需要用到什么类型就定义什么样的属性 2: 从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面 */ MainViewController与SecondViewController两个视图 控制器 ,点击MainViewController中的按钮将跳转到SecondViewController视图,同时想要传递一个值过去.这时可以利用属性传值. 首先SecondViewCo

IOS传值之单例传值

在IOS应用中,不同view及应用中经常会有传值和变量共享,有几种方式可以实现: 1.extern方式 2.单例模式 3.delegate方式 单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.它经常用来做应用程序级别的共享资源控制.这个模式使用频率非常高,通过一个单例类,可以实现不同view之间的参数传递 #import <Foundation/Foundation.h> @interface Session : NSObject @prop

iOS传值之代理传值

iOS中传值方式有好几种,分别是:代理传值,block传值,属性传值,通知传值,单例传值,利用userdefault或者文件方式传值,通常代理传值和block传值使用最普遍,本文介绍代理传值的方式,后续博客会一次写上其他传值方式. 一 什么是委托代理? 1.协议(protocol),就是使用了这个协议后,必须按照协议规定的内容来处理事情,协议中要求的方法必须实现(@optional的方法除外). protocol是一种语法,它提供了一个很方便的.实现delegate模式的机会. 定义protoc

iOS 传值总结

在ios开发中,我们经常需要用到传值来实现对数据的传递和加载,不管是跨页面的传值还是不跨页面的传值,关于传值的实现我简单的做了以下总结: 一:利用通知(NSNotificationCenter)进行传值: 首先我们从ViewController跳到RootViewController中,在RootViewController中写如下代码: 然后在ViewController里面接收这个通知,一定要在主线程里面比如:viewDidLoad函数里面添加这句代码: 这样我们就简单的利用了通知实现了传值

IOS传值--代理传值,block传值,NSNotificationCenter传值

一:利用代理传值,就是利用代理进行通信. 接口文件: #import <Foundation/Foundation.h> @protocol Cdelegate <NSObject> -(void)change:(NSString *)name; @end .h文件 @interface ViewController : UIViewController<Cdelegate> .m文件 - (IBAction)pushBB:(id)sender { BViewContr

IOS 传值方法总结

1.属性传值前向后传值. 2.协议传值 http://liuyafang.blog.51cto.com/8837978/1549391 3.Block传值代替协议代理传值,主要时间点问题. http://liuyafang.blog.51cto.com/8837978/1551399 4.单利传值数据共享.5.通知传值 http://liuyafang.blog.51cto.com/8837978/1557029 通知中心NSNotificationCenter提供了一种更加解耦的方式.最典型的

iOS 传值方式

1.代理传值 2.AppDelegate传值 3.block传值 4.通知传值 5.NSUserDefault传值

iOS传值方式:属性,代理,block,单例,通知

第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视图控制器的部分信息 例如:第一个界面中的lable显示第二个界面textField中的文本 这就需要使用代理传值 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五种传值方式: (一)属性传值 第二个界面中的lable显示第一个界面textField中的文本 首先我们建立一个RootView

iOS 传值 委托(delegate)和block 对比

 技术交流新QQ群:414971585 这篇文章建议和前一篇一起看, 另外先弄清楚IOS的block是神马东东. 委托和block是IOS上实现回调的两种机制.Block基本可以代替委托的功能,而且实现起来比较简洁,比较推荐能用block的地方不要用委托. 本篇的demo和前一篇是同一个,可以到github上下载不同的版本, 源码下载地址: https://github.com/pony-maggie/DelegateDemo A类(timeControl类)的头文件先要定义block,代码如下