关于按钮的action的问题
来源:互联网 发布:java构造方法的作用 编辑:程序博客网 时间:2024/05/16 16:06
mikej的问题:
说到selector有个小问题: 比如我在处理UIButton 响应事件的时候,可能需要对不同按钮执行差不多的函数,比如我在做计算器的时候,按钮123456789,我分别定义成btn1~9,在create buttong时候我在addtarget由于不知道怎么把参数传给一个响应函数,所以只好定义9个接口函数。。。。
比如我想让接口响应函数写成如下格式,又没有办法
-(void) onTapNumberButton : (id) sender{
int nuber = sender.value……
我在addtarget定义的时候,action变量应该怎么传参数?
比较好的解决方法:
addTarget: action:语法能够传递的唯一参数就是sender,也就是按钮本身,比如NSButton。NSControl带有如下两个方法:-setTag:/-tag。
因此,在Cocoa中比较好的做法是:
[btn1 setTag:1];
[btn2 setTag:2];
…
- (void)digitButtonPressed:(id)_sender {
NSLog(@"the user pressed: %i", [(BSControl *)_sender tag]);
}
不过UIControl并没有setTag这种方法。如果在iPhone中这样做不行,我想可否用UIButton的-titleForState和-setTitle:forStates:这两个方法来获取sender的title(官方SDK)。
[btn1 addTarget:self action:@selector(digitButtonPressed:) forEvents:255];
[btn2 addTarget:self action:@selector(digitButtonPressed:) forEvents:255];
- (void)digitButtonPressed:(id)_sender {
if ([_sender isPressed]) {
switch(_sender) {
case btn1:
break;
case btn2:
//code
break;
}
}
==================================================================================================
我现在用了另外一个方式实现上述功能:
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的问题
- jsp关于form表单为两个按钮设置不同action的问题
- jsp关于form表单为两个按钮设置不同action的问题
- 关于按钮的css问题
- 关于三台按钮的问题
- Struts2.5关于<s:action.../>标签找不到Action的问题
- 关于Action里面定义的变量问题
- 关于struts2中<s:action>的问题
- 关于Struts2框架action后缀的问题
- 关于Action里面传值的问题
- 关于springMvc action 无法进入的问题
- WD4A 按钮action的获取
- 关于位图按钮的两个问题
- 关于js 提交按钮的问题
- 关于一个label里放多个按钮的问题
- cocos2dx --- 关于模态弹窗中按钮响应的问题
- 关于js返回按钮的问题
- 关于自定义开关按钮的问题
- 学习笔记(1)-浅谈this和super
- 【UBUNTU】获得root权限
- 幸福和快乐
- Writing shellcode for Linux and *BSD
- 深入了解php底层机制
- 关于按钮的action的问题
- 【UBUNTU】chmod命令使用详解
- Cocoa文本语音转换例子
- Local Stack Overflow(Basic Module)
- 大小端对齐
- 使Core Data支持恢复操作
- 黑马程序员_java基础视频第21天_JavaIO续集3
- Local Stack Overflow(Advanced Module)
- 在自定义NSTextField中响应键盘消息