IOS Block传值
来源:互联网 发布:网页nginx forbidden 编辑:程序博客网 时间:2024/04/29 06:17
1.使用协议在下级像上级传递值得时候比较繁琐,需要定义协议方法,定义属性,调用,在上级里设置代理实现代理方法。
2.使用block 在类前定义需要使用到的block,
#import <UIKit/UIKit.h>
/**
* 定义一个block 用来把自己传出去 给viewController 添加
*/
typedef void (^DialogViewBolock)(UIView *);
/**
* 定义一个无参数的block 主要为ok、按钮被点击的时候让调用者自己处理
*/
typedef void (^OKBtnBlock )(void);
@interface Dialog : UIView{
}
/**
* 定义一个属性的block 是为了让按钮点击的时候触发这个block 在按钮点击事件里调用这个block
*/
@property (nonatomic,strong)OKBtnBlock okBtnBlock;
/**
* 对话框的封装 第一个block是为了把自己传过去 最后一个block是按钮点击的block
*/
-(void)addDialogViewTo:(DialogViewBolock)dialogView withTitle:(NSString *)title withContent:(NSString *)content btnText:(NSString *)btnText okBtn:(OKBtnBlock) myOKBtnBlock;
@end
-(void)addDialogViewTo:(DialogViewBolock)dialogView withTitle:(NSString *)title withContent:(NSString *)content btnText:(NSString *)btnText okBtn:(OKBtnBlock)myOKBtnBlock{
UIButton *okBtn=[[[UIButtonalloc] initWithFrame:CGRectMake(0, centerViewHeight*2/3, centerViewWidth, centerViewHeight/3)] autorelease];
[okBtn setTitle:btnTextforState:UIControlStateNormal];
[okBtn addTarget:selfaction:@selector(okBtn)forControlEvents:UIControlEventTouchUpInside];
[okBtn setBackgroundColor:[UIColorcolorWithRed:0.94green:0.94blue:0.94alpha:1.00]];
[okBtn setTitleColor:[UIColorblackColor] forState:UIControlStateNormal];
[self addSubview:okBtn];
//把dialogView自己传过去
dialogView(self);
_okBtnBlock=Block_copy(myOKBtnBlock);
}
/**
* 当ok按钮被按的时候 调用这个方法 我们调用block 让上级调用的自己实现
*/
-(void)okBtn{
_okBtnBlock();
}
4.在需要调用这个方法的地方正常调用即可。
Dialog *dialog=[[Dialogalloc] init];
[dialog addDialogViewTo:^(UIView * view){
view.tag=2001;
[self.viewaddSubview:view];
} withTitle:@"对话框"withContent:@"请注意"btnText:@"确定"okBtn:^{
NSLog(@"Dialog的对话框的去人按钮被处罚了 ");
UIView *view=[self.viewviewWithTag:2001];
[view removeFromSuperview];
}];
- iOS传值(block传值)
- IOS传值:block传值
- ios block传值
- IOS Block传值
- ios block传值
- ios Block传值
- iOS block传值
- iOS Block传值
- iOS代理、block传值
- iOS用block传值
- iOS block传值
- iOS Block传值
- ios block传值
- iOS block传值
- iOS block传值
- IOS Block传值
- iOS利用Block传值
- iOS开发 Block传值
- restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-
- 图片压缩工具Thumbnailator的使用
- AngularJs+bootstrap搭载前台框架3
- 博客搬家
- Execution failed for task ':compileDebugAidl'. java.lang.IllegalStateException: aidl is missing
- IOS Block传值
- import caffe经典报错处理on Ubuntu & Mac OS 10.11
- 值得学习的C语言开源项目
- iOS 获得键盘的高度 NSNotificationCenter
- Check the existence of public synonyms Remove the public synonyms
- AIDL mm编译问题
- Asio 技术学习
- linux工具---windows文件传输到linux工具以及SSH客户端软件
- HadoopYarn—创建Eclipse工程