使用Block传值的常用实例
来源:互联网 发布:淘宝神笔模板怎么用 编辑:程序博客网 时间:2024/05/21 21:02
问题:viewControllerB需要拿到viewControllerA的itemView里的Model,进行相应的信息设置。Model该如何传递过去?
/*
Model –> ItemView –> ListView : [itemClick:] —> A : [itemClickBlock(model) ] —> A : [performSegueWithIdentifier:sender] —> A : [ prepareForSegue:] –> B
*/
ItemView
@interface ItemView : UIView@property (nonatomic, strong) Model *model;@end
Model
@interface Model : NSObject@property (nonatomic, copy) NSString *icon;@property (nonatomic, copy) NSString *title;@property (nonatomic, copy) NSString *intro;@end
ListView
@interface ListView : UIScrollView// 定义一个block进行传值, 要想拥有一个block属性,只能用copy @property (nonatomic, copy) void (^itemClickBlock)(Model *model);@end@implementation ListView- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // 加载关卡信息 [self loadStageInfo]; } return self;}-(void)loadStageInfo{ //先取出itemView。。。。 [itemView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(itemClick:)]];}#pragma mark 点击了关卡- (void)itemClick:(UITapGestureRecognizer *)tap{ if (_itemClickBlock) { ItemView *itemView = (ItemView *)tap.view; _itemClickBlock(itemView.model); }}@end
ViewControllerA
@implementation ViewControllerA- (void)viewDidLoad{ [super viewDidLoad]; // 2.添加ListView ListView *listView = [[ListView alloc] initWithFrame:self.view.bounds]; listView.itemClickBlock = ^(Model *model){ // MyLog(@"%@", model.title); 这里就可以拿到model里的属性 [self performSegueWithIdentifier:@"segue" sender:model]; }; // 这里用insert保证listView在最下层 [self.view insertSubview:listView atIndex:0];}#pragma mark 跳转之前会调用(一般在这里传递数据给下一个控制器)- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ ViewControllerB *ready = segue.destinationViewController; ready.model = sender;}
ViewControllerB
#import <UIKit/UIKit.h>@class Model;@interface ViewControllerB : UIViewController// 关卡信息@property (nonatomic, strong) Model *model; //model传进来可以赋值了@property (weak, nonatomic) IBOutlet UILabel *stageNo;@property (weak, nonatomic) IBOutlet UILabel *stageIntro;@property (weak, nonatomic) IBOutlet UIImageView *stageIcon;- (IBAction)back;@end
0 0
- 使用Block传值的常用实例
- iOS编程——OC viewController 传值常用方法Delegate和Block的使用
- block传值的简单使用
- 关于Block页面传值的使用
- iOS block传值的简单使用
- Synchronized (同步) block使用实例
- 关于BLOCK逆向传值和PickerView的使用
- iOS中使用Block反响传值的用法
- IOS学习 Block语法的使用:声明、创建、引用局部变量,使用block从后往前传值
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- IOS开发: 使用Block在两个界面之间传值(Block高级用法:Block传值)
- 使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
- Flex常用组件的使用实例
- Block的使用 iphone
- UITableView去掉分隔线
- mongo的复制集
- android自定义CheckBox和RadioButton中文字和图片之间距离问题解决
- Android 中Canvas.drawBitmap()的使用
- 微软华裔科学家和他们的又一次冲动
- 使用Block传值的常用实例
- 查看mysql版本的四种方法
- 最详细的Log4j使用教程
- ios 生成二维码
- Java获取本机IP
- Jmeter学习(三)——常用测试元件
- JAVA---关于public class的理解
- 深入Android开发之--理解View#onTouchEvent
- 手机管理应用研究【3】—— 垃圾清理篇