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,如需转载请自行联系原作者

相关文章
|
7月前
|
JavaScript
Vue给Element UI的el-popconfirm绑定按钮事件
Vue给Element UI的el-popconfirm绑定按钮事件
|
3月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
143 3
|
4月前
|
前端开发 开发者 开发框架
JSF与Bootstrap,打造梦幻响应式网页!让你的应用跨设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,响应式设计至关重要,以确保不同设备上的良好用户体验。本文探讨了JSF(JavaServer Faces)与Bootstrap框架的结合使用,展示了如何构建响应式网页。JSF是一个基于Java的Web应用框架,提供丰富的UI组件和表单处理功能;而Bootstrap则是一个基于HTML、CSS和JavaScript的前端框架,专注于实现响应式设计。通过结合两者的优势,开发者能够更便捷地创建自适应布局,提升Web应用体验。然而,这种组合也有其局限性,如JSF组件库较小和较高的学习成本等,因此在选择开发框架时需综合考虑具体需求和应用场景。
51 0
|
4月前
|
图形学
小功能⭐️Unity获取点击到的UI
小功能⭐️Unity获取点击到的UI
|
6月前
|
XML IDE 开发工具
【Android UI】自定义带按钮的标题栏
【Android UI】自定义带按钮的标题栏
64 7
【Android UI】自定义带按钮的标题栏
|
5月前
|
JavaScript API
【Element-UI】vue使用 this.$confirm区分取消与关闭,vue给this.$confirm设置多个按钮
【Element-UI】vue使用 this.$confirm区分取消与关闭,vue给this.$confirm设置多个按钮
695 0
|
5月前
|
开发者
小而美的IKUN-UI组件库源码学习(按钮 Button)
小而美的IKUN-UI组件库源码学习(按钮 Button)
33 0
|
7月前
【UI】elementui select点击获取label 和 value
【UI】elementui select点击获取label 和 value
61 1
|
16天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
2月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
122 3