IOS传值之Block传值(二)】的更多相关文章

在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据更新成功. 其中添加联系人界面的数据传递使用代理方式实现. 编辑联系人界面的数据传递使用block实现. 下面来看具体过程 1.整个界面搭建 在storyboard里拖拽四个控制器,其中联系人界面是一个UITableView.界面之间的跳转使用代码实现,但是要给每一个控制器指定一个标识.按功能分别指…
在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据更新成功. 其中添加联系人界面的数据传递使用代理方式实现. 编辑联系人界面的数据传递使用block实现. 下面来看具体过程 1.整个界面搭建 在storyboard里拖拽四个控制器,其中联系人界面是一个UITableView.界面之间的跳转使用代码实现,但是要给每一个控制器指定一个标识.按功能分别指…
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert…
@interface QWViewController : UIViewController @property(nonatomic,strong)UILabel *label; @property(nonatomic,strong)UITextField *textField; @end #import "QWViewController.h" #import "QWViewControllerTwo.h" @interface QWViewController…
ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的. 下面是理论部分: 1.block的定义 // 声明和实现写在一起,就像变量的声明实现 int a = 10; int (^aBlock)(int, int) = ^(int num1, in…
转自:http://blog.sina.com.cn/s/blog_60b45f230100yiaf.html 用此方法传值可以替代委托了.具体例子: MainView.h #import <UIKit/UIKit.h> @interface MainView : UIViewController { IBOutlet UIButton* btn; IBOutlet UILabel* labShow; } -(IBAction)push:(id)sender; @end MainView.m…
ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同一个对象,对象的属性相同,所以可以用来传值. block 传值 与 代理传值相似,主要用于第二个页面向第一个页面传值,block 传值具体步骤: 在第二个页面: 1.声明: block typedef void(^SendMessagerBlock) (NSString *str); 2.创建方法:…
iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值.单例模式传值.通过设置属性传值,再有其他的传值方式没有遇到使用过在此不做说明.场景适合,自己使用舒服就是好的方式. 在iOS开发的过程中,常见的页面跳转传值方式大致可以分为两种,现归纳总结一下: 第一种:OneViewController页面跳转到TwoViewController页面(即顺传)…
传值有四种方法 : 1. 属性传值 2. 单例传值 3. 代理传值 4. block传值     一.属性传值   (前-->后) 1. 后面的界面定义一个属性  存放前一个界面传过来的值    注意:属性定义成字符串还是别的类型 取决于你的需求    2. 后面的界面创建完毕后,为属性赋值(记录需要传递的值)   3. 在需要使用值的地方  使用属性记录的值   4. 通过 定义属性 达到传值目的的方法 称为属性传值 属性传值一般用于 从前一个界面向后一个界面传值   二.单例传值  (万能的…
iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面. 第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第…
本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色. 第1步:在发送者(界面B)中,制定协议(在.h头文件中声明) // 协议名一般以本类的类名开头+Delegate (包含前缀) @protocol ConfigViewControllerDelegate <NSObject> // 声明协议方法,一般以类名开头(不需要前缀) - (void)changeBgColor:(UI…
一.代理传值的方法 1.Hehe1ViewController.h中 #import <UIKit/UIKit.h> @protocol Hehe1ViewControllerDelegate <NSObject> - (void)backValueWith:(NSString*)str; @end @interface Hehe1ViewController : UIViewController @property(nonatomic,weak) id delegate; @en…
上个月,针对block恶补了一下,以为自己全部掌握了,其实不尽然. 昨天项目中在下载的时候用到,自己竟然不知道该从何下手,惭愧~ 情景是这个样子的:我写了个下载类,阴老师在调用时,将参数(sid,URL)传递给我,我拿到URL之后,进行下载,下载完成后,将结果传递给他:如果成功,返回sid和success为YES:如果失败,返回sid和success为NO. 在将sid和success返回时,用到了block,他在调用的时候,方法是这个样子的: - (void)downloadScriptWit…
iOS页面传值方式 应用于: 两个互动的界面:1)页面一跳转到页面二,页面一的textField的值传给页面二的label.2)A页面跳转到B页面,B页面再跳转回A页面(注册页面跟登录页面) 两个不互动的两个界面:数据持久层跟表示层的数据交互. 几种传值方式: 属性传值  委托delegate方式 通知notification方式 block方式 单例模式方式 UserDefault或者文件方式 1.属性传值(顺传): 需要定义一个公开的属性 需要一个你需要传值的对象 进行属性赋值 实现:A.B…
一.简述 在iOS开发过程中,页面跳转时在页面之间进行数据传递是很常见的事情,我们称这个过程为页面传值.页面跳转过程中,从主页面跳转到子页面的数据传递称之为正向传值:反之,从子页面返回主页面时的数据传递称之为反向传值. 目前我所了解和掌握的传值方式有: 属性传值 单例传值 NSUserDefaults传值 代理传值 block传值 通知传值 KVO/KVC  iOS----KVC和KVO 详解 二.页面传值的详解 2.0 准备工作 为了实现页面之间传值,我们需要准备两个页面,代码结构如下图所示.…
界面传值 四种传值的方式 1.属性传值(从前往后) 步骤: 1.属性传值用于第一个界面向第二个界面传值 2.明确二者联系的桥梁,也就是触发跳转的地方 3.明确传输的值,类型是什么 4.在第二个视图控制器内部声明相对应类型的属性,来接受传输的值 5.在第二个界面使用传入的值 2.代理传值(从后往前) 步骤: 1.声明协议 UI中的协议名称 为 当前类名 + Delegate @protocol FourViewControllerDelegate<NSObject> - (void)pushVa…
点击打开链接    iOS - 单例传值 (二) 单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象 你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址,也就是同一块内存,所以都是一样的/ so..只能有一个对象,就是实例化的那个 (1)定义单例类singleton #import <Foundation/Foundation.h> @interface singleton : NSObject //@property (strong,nonato…
1.block在俩个UIViewController间传值 近期刚学了几招block 的高级使用方法,事实上就是利用block语法在俩个UIViewController之间传值,在这里分享给刚開始学习的人,同一时候也方便我自己理解. 我们知道UINavigationController类管理UIViewController的时候,利用的是"栈"的思想,在这里不做过多解释,切入正题.如果我们如今有俩个UIViewController,viewC1和viewC2.viewC1比viewC2…
一:属性传值 传值情景:从前一个页面向后一个页面传值 a.在后一个页面,根据传值类型和个数,写属性 b.在前一个页面, 为属性赋值 c.在后一个页面, 使用值 例如: 第一个视图: #import "FirstViewController.h" // 导入头文件 #import "SecondViewController.h"@interface FirstViewController ()@end@implementation FirstViewControlle…
block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传值的步骤基本上是一样的 typedef void(^BaDa)(NSString *, UIColor *); @interface SecondViewController : UIViewController @property (nonatomic, retain) UITextField *…
// AppDelegate.m // 页面传值总结 // // Created by qianfeng on 15/6/13. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (…
// // ZYViewController.h // BlockTest // // Created by yejiong on 14/11/2. // Copyright © 2014年 zzz. All rights reserved. // #import <UIKit/UIKit.h> //1.声明一个 delegate 协议. @protocol ZYViewControllerDelegate <NSObject> //声明一个方法用来传值. //返回值表明传值的结果…
ios学习-delegate.传值.跳转页面     1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选择保存路径即可. 3.创建文件夹Model.Controller. 4.Model文件夹创建User类:User.h User.m 代码: User.h: #import <Foundation/Foundation.h> @interface User : NSObject @property …
block传值是从后往前传值---代理也是 // 使用block时, 不能访问self, 也不能直接访问属性, self.属性, 用self调用方法; 只要这样做了, block都会对其强引用一份, 也就是造成self对象引用计数+1;    // 如何避免出现循环引用的情况: 1. 在MRC下, 使用__block 定义一个和self同样的指针, 让block弱引用; 2. 在ARC下 使用__weak    //    __weak typeof(self)weakSelf = self; …
1.使用代理delegate的方法 2.使用通知Notification的方法 3.KVO等方法 4.block传值 ~~~~~~~~~~~~~~~~ 1.使用代理delegate的方法 #import "ViewController.h" #import "SubViewController.h" @interface ViewController ()<subViewDelegate> @property(nonatomic,strong)UILab…
1.简单复习Block的定义.赋值.调用做学习传值铺垫: //声明一个函数 无返无参void printfHello(int a);//函数的实现void printfHello(int a){     printf("hello wold\n"); }//函数指针的类型//void (*)(int);//定义一个函数指针变量 void (*p)(int) = printfHello; //block是块语法,实质就是匿名函数 //定义一个block变量,block的定义和函数的定义很…
UIButton的两种block传值方式 方式1 - 作为属性来传值 BlockView.h 与 BlockView.m // // BlockView.h // Block // // Created by YouXianMing on 15/1/14. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @class BlockView; /** 定义枚举值 */ typed…
1:delegate或者block传值 import UIKit class ViewController: UIViewController,TestDelegatePassValueDelegate { @IBOutlet weak var TFContent: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, ty…
有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳转传值 1.属性传值(正向传值) 属性传值是正向传值,只可以从前面一个页面传递到第二个页面,不可以从第二个页面传递到第一个页面 2.代理传值(逆向传值) 代理传值是逆向传值 代理传值步骤 代理传值 适用于 反向传值 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewControll…
http://itjoy.org/?p=420 前边我们介绍过属性传值和协议传值,这里介绍一下块传值,块类似于C中的函数指针.在Controller中传递数据非常方便,还是继续上一章的例子,将数据从Second传递到First,这里使用块来完成,看起来似乎和协议很像,不过比协议略简单. 代码如下所示:           Objective-C   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28…