关于按钮的action的问题

关于按钮的action的问题,第1张

概述mikej的问题: 说到selector有个小问题: 比如我在处理UIButton 响应事件的时候,可能需要对不同按钮执行差不多的函数,比如我在做计算器的时候,按钮123456789,我分别定义成btn1~9,在create buttong时候我在addtarget由于不知道怎么把参数传给一个响应函数,所以只好定义9个接口函数。。。。 比如我想让接口响应函数写成如下格式,又没有办法 -(void)

mikej的问题:

说到selector有个小问题: 比如我在处理UIbutton 响应事件的时候,可能需要对不同按钮执行差不多的函数,比如我在做计算器的时候,按钮123456789,我分别定义成btn19,在create buttong时候我在addtarget由于不知道怎么把参数传给一个响应函数,所以只好定义9个接口函数。。。。

比如我想让接口响应函数写成如下格式,又没有办法
-(voID) onTapNumberbutton : (ID) sender{
int nuber = sender.value……

我在addtarget定义的时候,action变量应该怎么传参数?

比较好的解决方法:

addTarget: action:语法能够传递的唯一参数就是sender,也就是按钮本身,比如NSbuttonNSControl带有如下两个方法:-setTag:/-tag

因此,在Cocoa中比较好的做法是:

 

@H_404_76@ [btn1 setTag:1];

@H_404_76@ [btn2 2];

 

@H_404_76@ …

 

@H_404_76@ - (voID)digitbuttonpressed:(ID)_sender {

@H_404_76@ NSLog(@"the user pressed: %i",[(BSControl *)_sender tag]);

@H_404_76@ }


不过UIControl并没有setTag这种方法。如果在iPhone中这样做不行,我想可否用UIbutton的-TitleForState和-setTitle:forStates:这两个方法来获取sender的Title(官方SDK)。   对于iPhone非官方SDK,可以用下面的方法直接判断是哪个按钮:   @H_404_76@ [btn1 addTarget:self action:@selector(digitbuttonpressed:) forEvents:255];

@H_404_76@ [btn2 addTarget:255];

…   @H_404_76@ - (ID)_sender {

@H_404_76@ if ([_sender ispressed]) {

@H_404_76@ switch(_sender) {

@H_404_76@ case btn1:

break;

@H_404_76@ case btn2:

//code

;

@H_404_76@   }

@H_404_76@        }

 }  

==================================================================================================


我现在用了另外一个方式实现上述功能:
1.定义一个 UIbutton的子类,将所有的button相关的信息写道子类初始化中,在本例里面,我将1,2,3,4,5,6这些数字参数写入 子类定义的变量 indicator中。
2.在写addtarget的时候 写成
btn2 addTarget:btn2 action:@selector(digitbuttonpressed:) …];
这样在 UIbutton的子类 UINumberbutton里面写入子类的响应函数 digitbuttonpressed
3.为了方便代码管理,在digitbuttonpressed里面调用了VIEw里面的统一处理函数 addNumber :(int) number 来实现计算器的所有功能。

这样就避免了大量地写switch函数,同时参数传递也不止一个了。比较方便。



http://www.cocoachina.com/b/?p=205#more-205

总结

以上是内存溢出为你收集整理的关于按钮的action的问题全部内容,希望文章能够帮你解决关于按钮的action的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1064919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存