ios开发block传值ios开发中的block传值

ios开发中的block传值,lock很神秘很特别,学会使用lock可以简化代码,使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值。准备工作,建立一个工程,然后创建两个视图控制器,在第一个视图控制器中创建一个UITextfild和一个UIButto,其中UITextfild是为了...
block很神秘很特别,学会使用block可以简化代码,使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值。准备工作,建立一个工程,然后创建两个视图控制器,在第一个视图控制器中创建一个UITextfild和一个UIButton,其中UITextfild是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面。 第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第二个视图将要消失的时候,就将第二个界面上TextFiled中的文字传给第一个界面,并且显示在UITextfild上。工具/原料xcodemac方法/步骤1准备工作的界面截图如下图所示。步骤阅读步骤阅读2现在的block传值是从后往前传值和代理差不多,所以,现在我们在SecondViewController.h文件中定义block再@interface上面重新定义blocktypedefvoid(^ReturnTextBlock)(NSString*showText);然后声明block属性@property(nonatomic,copy)ReturnTextBlockreturnTextBlock;然后写一个方法,这个方法第一个界面会用到。-(void)returnText:(ReturnTextBlock)block;SecondViewController.h文件中就写这些了,我们再到SecondViewController.m文件中步骤阅读3再.m文件中,我们先实现.h中声明的方法-(void)returnText:(ReturnTextBlock)block{  self.returnTextBlock=block;}这个方法是,把block赋值给我们新创建的,未实例化得returnTextBlock然后在视图将要消失的时候,我们把值传给第一个界面-(void)viewWillDisappear:(BOOL)animated{     if(self.returnTextBlock!=nil){    self.returnTextBlock(self.pa.text);  }}第二个界面的工作,就这么完成了,我们转到第一个界面。步骤阅读4首先引用第二个界面步骤阅读5然后把,textfild和button都映射到.m文件中,映射后的结果如图所示。步骤阅读6然后我们实现跳转(button)的点击事件,-(IBAction)tiaozhuan:(UIButton*)sender{  SecondViewController*sec=[[UIStoryboardstoryboardWithName:@\"Main\"bundle:nil]instantiateViewControllerWithIdentifier:@\"a\"];  [secreturnText:^(NSString*showText){    self.pass.text=showText;  }];  [self.navigationControllerpushViewController:secanimated:YES];}在点击事件中添加 SecondViewController*sec=[[UIStoryboardstoryboardWithName:@\"Main\"bundle:nil]instantiateViewControllerWithIdentifier:@\"a\"];  [secreturnText:^(NSString*showText){    self.pass.text=showText;  }];  [self.navigationControllerpushViewController:secanimated:YES];7 SecondViewController*sec=[[UIStoryboardstoryboardWithName:@\"Main\"bundle:nil]instantiateViewControllerWithIdentifier:@\"a\"];这句话是获取SecondViewController。  [secreturnText:^(NSString*showText){    self.pass.text=showText;  }];这句话是,调用方法returnText:并传值为^(NSString*showText){    self.pass.text=showText;  }传的这个block,就赋值给了第二个界面的self.returnTextBlock。然后[self.navigationControllerpushViewController:secanimated:YES];跳转到第二个界面。8运行结果为。步骤阅读步骤阅读步骤阅读END注意事项如有疑问,欢迎一起探讨

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/yPVdLL9dQ0.html

(0)

相关推荐