[英]Is there a way of doing an action locally on a UIButtton?
我正在建立一个表,我有此代码:
UIButton *done = [[UIButton alloc]initWithFrame:CGRectMake(20, 25, 40, 40)];
[done setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
[done addTarget:self action:@selector(done:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:done];
return cell;
这是行不通的,因为仅在此范围内声明了此按钮,而我只想在此单击时更改其图像
在done:
方法中更改图像。
- (void)done:(id)sender
{
UIButton *button = (UIButton *)sender;
[button setImage:[UIImage imageNamed:@"yourImage.png"]
forState:UIControlStateNormal];
}
您完成的方法是什么样的? 我认为,如果向该方法添加一个sender参数,则可以访问该按钮。
- (void)done:(id)sender
{
UIButton *button = (UIButton*)sender;
[button doStuff];
}
您必须声明一个ivar或私有/公共属性。 因此,您可以从任何地方更改其图像,例如:
@interface ViewController ()
@property UIButton *done;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.done = [[UIButton alloc]initWithFrame:CGRectMake(20, 25, 40, 40)];
[self.done setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
[self.done addTarget:self action:@selector(done:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.done];
}
- (void)done:(UIButton *)sender
{
//Do something.. like change image
[self.done setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
}
@end
或者,您将发送方声明为UIButton,如下所示:
- (void)done:(id)sender
{
UIButton *done = (UIButton *)sender;
//Do something with the button
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.