美文网首页
Block传值

Block传值

作者: TikBai | 来源:发表于2017-04-14 19:45 被阅读0次

iOS传值一共有四种:属性传值,代理传值,通知传值以及Block传值;

今天我们来说一下Block传值:

概念:带有自动变量的匿名函数


语法:

“^”这个符号表示这是一个Block

Block中不可以对C语言数组进行操作


用途:

传值


模式

无参数无返回值的Block

无参数有返回值的Block

有参数无返回值的Block

有参数有返回值的Block


block的代码是内联的,效率高于函数调用

block对于外部变量默认是只读属性

block被Objective-C看成是对象处理


(1)在类中,定义一个Block变量,就像定义一个函数;

(2)Block可以定义在方法内部,也可以定义在方法外部;

(3)只有调用Block时候,才会执行其{}体内的代码;


下面就直奔主题吧---传值

1、传值方
//.h 文件/**

*  类型自定义

*/typedefvoid(^ReturnValueBlock) (NSString*strValue);@interfaceNextViewController:UIViewController/**

*  声明一个ReturnValueBlock属性,这个Block是获取传值的界面传进来的

*/@property(nonatomic,copy) ReturnValueBlock returnValueBlock;@end=================================================================//.m 文件#import"NextViewController.h"@interfaceNextViewController()@property(weak,nonatomic)IBOutletUITextField*inputText;- (IBAction)back:(id)sender;@end@implementationNextViewController- (void)viewDidLoad {    [superviewDidLoad];self.navigationItem.title =@"第二个界面";}/**

*  返回上一个界面

*

*  @param sender 按钮

*/- (IBAction)back:(id)sender {NSString*inputString =self.inputText.text;if(self.returnValueBlock) {//将自己的值传出去,完成传值self.returnValueBlock(inputString);    }    [self.navigationController popViewControllerAnimated:YES];}

@end

2、捕获方

//.m 文件#import"ViewController.h"

#import"NextViewController.h"

@interfaceViewController()

@property(weak,nonatomic)IBOutletUILabel*nextPassedValue;

- (IBAction)next:(id)sender;@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];}

//点击按钮跳转到第二个界面

- (IBAction)next:(id)sender

{    NextViewController *nvc = [[NextViewController alloc]init];

//赋值Block,并将捕获的值赋值给

UILabelnvc.returnValueBlock = ^(NSString*passedValue){self.nextPassedValue.text = passedValue;    }; 

  [self.navigationController pushViewController:nvc animated:YES];

}@end

相关文章

  • iOS开发-block传值

    block传值步骤比代理传值步骤简便,实际开发中经常使用到。 block传值分为block属性传值和block方法...

  • iOS-block总结

    block回调-传值 其实就是block作为参数传值方:类的.h有block属性,类的.m有block调用(传值,...

  • Block传值

    iOS传值一共有四种:属性传值,代理传值,通知传值以及Block传值; 今天我们来说一下Block传值: 概念:带...

  • oc中使用delegate和block进行反向传值

    delegate传值 block实现传值

  • iOS开发之利用Block逆向传值

    一、书写规范Block传值,需要注意的是,谁传值就需要定义Block,捕获方仅仅需要传递Block给传值方,并处理...

  • block开发使用场景

    block传值 利用block去代理代理传值 1. 代理传值 点击当前控制器Viewcontroller利用mod...

  • Block 之传值

    传值流程: 定义一个 block 在A实例中,传值给 block 在B实例中,实现block,获取到值 .h文件 ...

  • iOS 传值方式

    1,从前向后传值:属性传值 2, 从后向前传值: block、 代理、 通知 结论1, block、 代理 传值用...

  • iOS 传值的方式的区别

    1.属性传值。 2.block传值。 3.代理传值(delegate) 4.通知传值(notification)。...

  • iOS页面传值

    常用 + 代码 属性传值 方法传值 Block Delegate NSNotificationCenter传参 N...

网友评论

      本文标题:Block传值

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