我有一个带有许多UIButton的uiviewcontroller,它们被选中并一直按下,直到再次触摸为止。我在viewDidLoad中定义了每个按钮,并为它们提供了相同的选择器方法(tapButton):
[button1 addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside];
[button2 addTarget:self action:@selector(tapButton:) forControlEvents:UIControlEventTouchUpInside];
...
我想做的是在tabButton:方法中,使用选择器来确定按下了哪个按钮,然后使用以下内容更改其状态:
- (IBAction) tapButton:(id)sender
{
if ( sender.selected ) {
sender.highlighted = NO;
sender.selected = NO;
} else {
sender.highlighted = YES;
sender.selected = YES;
}
}
你会注意到这只是一个pseuodo代码,因为我不能真正做“sender.selected”或“sender.highlighted”,但这就是我想要完成的事情。
有没有可以实现这一目标的方式?我不想创建30个“tapButton”方法(这就是我拥有的UIButton的数量,是的......)来管理每个UIButton的状态。
非常感谢!
答案 0 :(得分:2)
您可以像这样设置每个按钮的tag
button1.tag = 1;
button2.tag = 2;
....
然后在你的选择器
- (IBAction) tapButton:(id)sender
{
switch((UIButton*)sender.tag){
case 1:
.....
}
}
答案 1 :(得分:0)
UIButton * selectedButton = [[UIButton allo]init];
/*for removing old highlight*/
selectedButton.higlighted = NO;
selectedButton = sender;
/*for setting new button highlight*/ sender.selected = YES
以上代码将对您有所帮助。这里使用新按钮存储最后一个按钮状态
答案 2 :(得分:0)
您可以使用switch case ...或者您也可以使用alpha属性...
来实现-(IBAction) tapButton:(id)sender
{
UIButton *btn = (UIButton *)sender;
if ([btn isSelected])
{
btn.selected = NO;
btn.alpha = 0.5;
} else {
btn.selected = YES;
btn.alpha = 1;
}
}