繁体   English   中英

有没有办法在UIButtton上本地执行操作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM