关闭

block在俩个UIViewController间传值

标签: IOSUIblock
670人阅读 评论(0) 收藏 举报
分类:

最近刚学了几招block 的高级用法,其实就是利用block语法在俩个UIViewController之间传值,在这里分享给初学者,同时也方便我自己理解。我们知道UINavigationController类管理UIViewController的时候,利用的是“栈”的思想,在这里不做过多解释,切入正题,假设我们现在有俩个UIViewController,viewC1和viewC2,viewC1比viewC2先进入到UINavigationController里,即viewC2是由viewC1push出来的, 这里的传值是指将viewC2的值传到viewC1里面 。例如通讯录的修改,微信里修改信息等。 

不多说,直接上例子: 

一.首先在viewC2的头文件中的代码: 

//1 。重定义一个block类型
typedef void(^BL)(UIColor *color);
typedef void(^stringBL)(NSString *string);
@interface SecondViewController : UIViewController
//定义一个block属性 一定要使用copy特性  原因:
@property (nonatomic, copy) BL block;
@property (nonatomic, copy) stringBL string;
- (void)valueBlock:(BL)block;
- (void)valueStringBlock:(stringBL)block;

提示:

重定义block在Xcode中有快捷实现方式,直接在@interfacexxx 上面一行打typedef会有提示:  直接回车,第一个参数是返回值类型,第二个为重定义的block名称,第三个为要传参数类型和参数名;然后需要定义重定义block类型的属性,并且实现参数为该重定义类型block的方法。 

二.viewC2的.m文件中代码:

- (void)viewDidLoad
{
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
  button.frame = CGRectMake(0, 70, 320, 40);
  [self.view addSubview:button];
  [button setTitle:@"return 1 page" forState:UIControlStateNormal];
  [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)buttonAction:(UIButton *)button
{
//	2.在合适的地方执行block代码
  self.block([UIColor redColor]);
  self.string(@"asdasdasd");
  [self.navigationController popToRootViewControllerAnimated:YES];
}
- (void)valueBlock:(BL)block
{
  self.block = block;
}
- (void)valueStringBlock:(stringBL)block
{
  self.string = block;
}

解释:实现头文件中定义的方法,方法内部写将参数赋值给重定义block的属性,然后在合适的地方执行block代码,block里面的参数即你要传的值。

三.在viewC1中push第二个页面的时候调用 viewC2的方法,直接回车,block重定义中的参数名里存的即是要在viewC1中修改的值。

0
0
查看评论

IOS—两个ViewController间传值(逆向传值)

上一篇 两个ViewController间传值中说明了如何从A传值到B,这次要讲的是如何从A进入B,在B输入值后回传给A,这类似于Android中的利用Activity的onActivityResult回调方法实现两个Activity之间的值传递,那么在IOS中如何实现这个功能呢,答案是使...
  • qq_17007915
  • qq_17007915
  • 2015-10-22 11:32
  • 840

IOS之UIViewController执行返回操作并传递参数值的两种方式

举个例子,第一个page(即UIViewController)显示天气,需要对所在地进行设置,这就需要跳转到第二个page,选择好所在地之后,将所在地信息(即返回参数)传回第一个page。第一种:通过Delegate的Protocol1.新建PassValueDelegate.h#import &l...
  • sbt0198
  • sbt0198
  • 2016-11-09 22:20
  • 890

iOS ViewController之间传值方法五(使用block)

5.使用block在ViewController之间传值 在B页面 .h文件 @interface TwoViewController : UIViewController //定义一个block,参数为字符串 typedef void (^ablock)(NSString *str); ...
  • xuepan1994
  • xuepan1994
  • 2015-11-24 23:20
  • 671

iOS编程——OC viewController 传值常用方法Delegate和Block的使用

写了个例子,简单介绍了下Delegate和Block的使用,注意点都在注释里,直接上代码了: 1.FirstViewController.h: #import @interface FirstViewController : UIViewController @end FirstVi...
  • wc455287693
  • wc455287693
  • 2015-08-24 13:05
  • 1623

ios控制器之间传值-Block传值

一、在发送者中定义代码块属性 @property (nonatomic,copy) void (^changeBgColor)(UIColor *color); 二、在发送者中进行代码块的调用 if (_changeBgColor) { // 代码块属性不为空 _chang...
  • Fantasy_Jun
  • Fantasy_Jun
  • 2017-04-24 18:13
  • 187

控制器之间的数据传递——Block传值

Block传值 我们先在这里约定:界面1传值到界面2为顺传,界面2传值到界面1为逆传 一般用Block传值是为了降低视图控制器之间的耦合度,和代理传值类似主要用于逆序传值。 一. 实现步骤: 给界面2定义一个Block属性;注意:在block传值中,要传几个值,block就有几个参数,参数...
  • SSIrreplaceable
  • SSIrreplaceable
  • 2016-08-29 18:36
  • 955

IOS-block实现页面之间的传值

利用Block实现两个页面之间的传值,假设有两个控制器control1 和control2,control1上有一个label和一个button,点击button跳转到control2,control2上有一个button和一个textField,点击control2上的button回到contro...
  • Arack
  • Arack
  • 2016-08-02 20:05
  • 689

Block--两个界面 间回调传值

使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第...
  • qq_30963589
  • qq_30963589
  • 2016-01-13 14:30
  • 432

block—控制器间传值

使用block,将VC2中的值回传给VC1步骤:
  • labixiaoxin1019
  • labixiaoxin1019
  • 2016-03-04 14:22
  • 58

Object-C两个页面viewcontroller 之间的传值方法

传值的文件 .m  NSString* newic=[NSString stringWithFormat:@"%d",btn.tag];     user__zhuce02ViewController *zhuce=[[user__zhu...
  • GuoGrower
  • GuoGrower
  • 2017-02-17 09:56
  • 826
    个人资料
    • 访问:70666次
    • 积分:1067
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:64篇
    • 译文:6篇
    • 评论:4条
    最新评论