Protocol 模拟UI中一个按钮点击改变lable中的值

简介:

要求:在一个UIView界面中又一个lable和Button,想点击按钮之后改变lable的值,用协议委托实现

Protocol(ChangeText.h):

#import <Foundation/Foundation.h>  @protocol ChangeText <NSObject>  -(void)change:(NSString *)val;  @end

Button.h:

#import <Foundation/Foundation.h> #import "ChangeText.h" @interface Button : NSObject  @property(nonatomic,retain) id<ChangeText> delegate;  -(void)changetext:(NSString *)str;  @end

Button.m:

 
#import "Button.h"  @implementation Button  -(void)changetext:(NSString *)val {     if ([_delegate respondsToSelector:@selector(change:)]) {         [_delegate change:val];     } }  - (void)dealloc {     [_delegate release];     [super dealloc]; }  @end


创建一个遵循协议的View

ViewA.h:

#import <Foundation/Foundation.h> #import "ChangeText.h" #import "Button.h" @interface ViewA : NSObject<ChangeText>  @property(nonatomic,retain)NSString* textValue; @property(nonatomic,retain)Button *btn;  //实现协议的change方法 -(void)change;  @end

View.m:

#import "ViewA.h"  @implementation ViewA  +viewAWithText:(NSString *)val {     ViewA *a = [[[ViewA alloc] init] autorelease];     a.textValue = @"text";     //初始化Button,并且将当前实现了协议的ViewA赋给button他的委托方法     Button *btn = [[[Button alloc] init] autorelease];     btn.delegate = a;     a.btn = btn;     return a; }  -(void)change:(NSString *)val {     self.textValue = val;     NSLog(@"当前的view中文本值是:%@",self.textValue); }  -(void)dealloc {     [_btn release];     [_textValue release];     [super dealloc]; }  @end

main:

#import <Foundation/Foundation.h> #import "ViewA.h" #import "Button.h" int main(int argc, const char * argv[]) {      @autoreleasepool {                  ViewA *view = [ViewA viewAWithText:@"text"];         NSLog(@"当然view中的文本值是:%@",view.textValue);         [view.btn changetext:@"lable"];     }     return 0; }

结果:

2013-08-05 17:23:22.754 按钮点击[2144:303] 当然view中的文本值是:text

2013-08-05 17:23:22.756 按钮点击[2144:303] 当前的view中文本值是:lable

















本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366464,如需转载请自行联系原作者

相关文章
|
1月前
如何实现 CRM Attachment UI 的 Advanced 按钮
如何实现 CRM Attachment UI 的 Advanced 按钮
24 0
|
17天前
|
JavaScript
Vue给Element UI的el-popconfirm绑定按钮事件
Vue给Element UI的el-popconfirm绑定按钮事件
|
5月前
HTML+VUE+element-ui通过点击不同按钮展现不同页面
HTML+VUE+element-ui通过点击不同按钮展现不同页面
82 1
|
3月前
|
前端开发
使用element-ui中的table时,当有多选又有翻页功能时,点击翻页后之前选中的数据丢失
使用element-ui中的table时,当有多选又有翻页功能时,点击翻页后之前选中的数据丢失
|
5月前
|
JavaScript
vue2.0 + element-ui 实战项目-点击按钮弹出form表单(五)
vue2.0 + element-ui 实战项目-点击按钮弹出form表单(五)
222 0
|
6月前
|
人工智能 自然语言处理 语音技术
关于element ui中引入官方的NavMenu时出现点击某个子菜单时,所有的子菜单全都展开问题
关于element ui中引入官方的NavMenu时出现点击某个子菜单时,所有的子菜单全都展开问题
47 0
|
7月前
|
Web App开发 前端开发 JavaScript
使用 Busy Dialog 动画阻止 SAP UI5 应用按钮短时间内快速被点击试读版
使用 Busy Dialog 动画阻止 SAP UI5 应用按钮短时间内快速被点击试读版
27 0
|
7月前
|
Web App开发 前端开发 JavaScript
使用函数节流思想避免 SAP UI5 应用里按钮短时间内被高频重复点击试读版
使用函数节流思想避免 SAP UI5 应用里按钮短时间内被高频重复点击试读版
26 0
|
1月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
27 0
|
1月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
15 0

热门文章

最新文章