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

目录
打赏
0
0
0
0
101
分享
相关文章
|
7月前
「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。
166 19
「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
585 3
【Android UI】自定义带按钮的标题栏
【Android UI】自定义带按钮的标题栏
117 7
【Android UI】自定义带按钮的标题栏
JSF与Bootstrap,打造梦幻响应式网页!让你的应用跨设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,响应式设计至关重要,以确保不同设备上的良好用户体验。本文探讨了JSF(JavaServer Faces)与Bootstrap框架的结合使用,展示了如何构建响应式网页。JSF是一个基于Java的Web应用框架,提供丰富的UI组件和表单处理功能;而Bootstrap则是一个基于HTML、CSS和JavaScript的前端框架,专注于实现响应式设计。通过结合两者的优势,开发者能够更便捷地创建自适应布局,提升Web应用体验。然而,这种组合也有其局限性,如JSF组件库较小和较高的学习成本等,因此在选择开发框架时需综合考虑具体需求和应用场景。
108 0
Angular携手Material Design:探索设计模式下的UI组件开发之道——从按钮到对话框的全面实战演示
【8月更文挑战第31天】在现代Web应用开发中,Angular框架结合Material Design设计原则与组件库,显著提升了用户界面的质量与开发效率。本文通过具体代码示例,详细介绍如何在Angular项目中引入并使用Material Design的UI组件,包括按钮、表单和对话框等,帮助开发者快速构建美观且功能强大的应用。通过这种方式,不仅能提高开发效率,还能确保界面设计的一致性和高质量,为用户提供卓越的体验。
99 0
|
12月前
|
【Element-UI】vue使用 this.confirmvuethis.confirm设置多个按钮
【Element-UI】vue使用 this.confirmvuethis.confirm设置多个按钮
1694 0
小而美的IKUN-UI组件库源码学习(按钮 Button)
小而美的IKUN-UI组件库源码学习(按钮 Button)
81 0
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
83 15
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
80 11
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问