iOS开发:使用Block在两个界面之间传值
来源:互联网 发布:lamp兄弟连 python 编辑:程序博客网 时间:2024/06/05 02:05
需求
- 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面。
- 第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第二个视图将要消失的时候,就将第二个界面上TextFiled中的文字传给第一个界面,并且显示在UILabel上。
一、在第二个视图控制器的.h文件中定义声明Block属性
// 声明的Block重新定义了一个名字 ReturnTextBlocktypedef void (^ReturnTextBlock)(NSString *showText);@interface TextFieldViewController : UIViewController// 定义的一个Block属性 @property (nonatomic, copy) ReturnTextBlock returnTextBlock;- (void)returnText:(ReturnTextBlock)block;@end
二、实现第二个视图控制器的方法
- (void)returnText:(ReturnTextBlock)block { self.returnTextBlock = block;}- (void)viewWillDisappear:(BOOL)animated { if (self.returnTextBlock != nil) { self.returnTextBlock(self.inputTF.text); // inputTF是视图中的UITextField。 }}
- 第一个方法就是定义的那个方法,把传进来的Block语句块保存到本类的实例变量returnTextBlock(.h中定义的属性)中,然后寻找一个时机调用,而这个时机就是上面说到的,当视图将要消失的时候,需要重写:
- (void)viewWillDisappear:(BOOL)animated;
方法。
三、在第一个视图中获得第二个视图控制器,并且用第二个视图控制器来调用定义的属性
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. TextFieldViewController *tfVC = segue.destinationViewController; [tfVC returnText:^(NSString *showText) { self.showLabel.text = showText; }];}
- 看代码中的注释,系统告诉我们可以用[segue destinationViewController]来获得新的视图控制器,也就是我们说的第二个视图控制器。
0 0
- iOS开发:使用Block在两个界面之间传值
- iOS开发:使用Block在两个界面之间传值
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- IOS开发: 使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:StoryBoard 使用Block在两个界面之间传值
- iOS开发:使用Block在两个界面之间…
- Block在两个界面之间传值
- 使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发中两个界面之间用Block传值
- Block 两个界面之间传值
- iOS开发:界面之间传值之Block传值(Block高级用法:Block传值)
- block 在两个控制器之间传值使用
- iOS开发 使用Block实现两个页面互相传值
- iOS 属性传值 Block传值 两个ViewController之间的
- Android EventBus的简单使用
- 如果让我重做一次研究生
- 【黑马程序员】集合
- 写个博客不容易
- css中的z-index用法详解
- iOS开发:使用Block在两个界面之间传值
- ubuntu设置开机屏幕亮度
- 笔试--编程题
- Android学习总结
- 【一种基于亮度映射的HDR算法】论文Adaptive Logarithmic Mapping For Displaying High Contrast Scenes
- Cocos2D:塔防游戏制作之旅(四)
- Hadoop基础
- 面试题12:输入数字n,按照顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999
- 父框架与跨域子框架的通信