本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/yPVdLL9dQ0.html
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注意事项如有疑问,欢迎一起探讨
赞
(0)