UI11_Block传值
2015-08-12 21:03
543 查看
对 void(^)(NSString *) 类型block进行typedef
Block 从后向前传值
block传值不需要返回值, 因为调用更需要返回值, 所以传值的时候只要参数, 不需要返回值
将SecondViewController里的值添加到MainViewControlle的数组里
主要代码如下 :
SecondViewController.h 文件
MainViewController.h 文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
练习:
准备工作 : 在第一个界面铺一个导航视图控制器和”下一页”按钮 , 在第二个界面写一个 “返回”的按钮, 点击返回到第一个页面, 并随机更换第一个页面的背景颜色
主要代码如下:
在第一个页面的”下一页”按钮的方法里写一个block , 实现随机更换背景的功能
第二个界面的接口文件里, 写一条同类型的block属性
第二个界面的实现文件里 , 调用传过来的block
// 进行typedef typedef void(^Block)(NSString *); // 写一条属性 @property(nonatomic, copy)Block block;
Block 从后向前传值
block传值不需要返回值, 因为调用更需要返回值, 所以传值的时候只要参数, 不需要返回值
将SecondViewController里的值添加到MainViewControlle的数组里
主要代码如下 :
SecondViewController.h 文件
// 1.写一条同第一个界面相同类型的block #import <UIKit/UIKit.h> typedef void(^Block)(NSString *); @interface SeconViewController : UIViewController @property(nonatomic, copy)Block block; @end //****注意: 不要忘记在实现文件里对block进行释放***** - (void)dealloc{ Block_release(_block); // block自己的release方法 }
MainViewController.h 文件
// 2.通过第二页属性, 接收本页block //①先在有第二页对象的方法里写一个block,为传值做准备 void (^block)(NSString *) = ^(NSString *str){ NSLog(@"%@", str); [self.arr addObject:str]; // 处理数据在block中(将第二页传来的值加到数组中) }; //②用第二页的属性接收本页的block secVC.block = block; ---------- // ③刷新tableView UITableView *tView = (UITableView *) [self.view viewWithTag:1000]; [tView reloadData];
// 3.在第二个文件的实现文件中进行传值操作: (SecondViewController.m 文件) self.block(@"hehe");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
练习:
准备工作 : 在第一个界面铺一个导航视图控制器和”下一页”按钮 , 在第二个界面写一个 “返回”的按钮, 点击返回到第一个页面, 并随机更换第一个页面的背景颜色
主要代码如下:
在第一个页面的”下一页”按钮的方法里写一个block , 实现随机更换背景的功能
-(void)click:(UIButton *)button{ // 没有参数, 没有返回值的block // 通过block, 改变self.view的背景颜色 void (^block)() = ^(){ self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 /255.0 blue:arc4random() %256 / 255.0 alpha:1]; }; // 2.通过第二页属性 接收block secVC.block = block; [self.navigationController pushViewController:secVC animated:YES]; [secVC release]; }
第二个界面的接口文件里, 写一条同类型的block属性
// 1.写一条属性, 负责接收第一页向第二页传递过来的block @property(nonatomic, copy)void(^block)()
第二个界面的实现文件里 , 调用传过来的block
-(void)click:(UIButton *)button{ 3.调用传过来的block self.block(); }
相关文章推荐
- UI11_UITabBar(视图控制器的管理者)
- ios中的UIAutomation脚本的录制
- 百度UEditor的介绍和图片上传的使用(java)
- UI05_ 制造一个毛玻璃效果
- UICollectionView集合视图的概念
- UIView动画事务与UIImageView动画
- hdu 1159/poj1458 Common Subsequence 最长公共子串
- poj 1699 Best Sequence(dfs+A(n,n))
- UI_Delegate
- UI10_cell自适应高度(显示尺寸不同图片.长短不一的字符串)
- UIControl 音乐播放 gif动图
- UI_Target-Action
- UITouch 摇晃手势启动器
- UIViewController
- HDU 5146 Sequence 回文数组
- poj2442---Sequence
- PDO对象之query()方法
- UIViewController
- 【Baltic2007】【BZOJ1345】序列问题Sequence
- Leetcode62 Unique Paths