管理多个按下的UIButtons
我有一个uiviewcontroller与许多UIButtons的意思是被选中并保持按下,直到再次触及。我在viewDidLoad中定义每个按钮,让所有的人都在相同的选择方法(tapButton):管理多个按下的UIButtons
[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的状态。
非常感谢!
您可以在选择
- (IBAction) tapButton:(id)sender
{
switch((UIButton*)sender.tag){
case 1:
.....
}
}
好主意,我喜欢它,但希望找到更多“优雅”...... + 1的东西。 – moshikafya 2012-07-30 03:31:23
继续找到,如果你知道,请让我知道:) – 2012-07-30 03:37:41
UIButton * selectedButton = [[UIButton allo]init];
/*for removing old highlight*/
selectedButton.higlighted = NO;
selectedButton = sender;
/*for setting new button highlight*/ sender.selected = YES
上面的代码将帮助您设置每个按钮的tag
这样
button1.tag = 1;
button2.tag = 2;
....
然后。我在这里使用新的按钮,存储最后一个按钮状态
您可以使用开关的情况下这个...或者你也可以通过使用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;
}
}
为什么不能这样做' sender.selected'或'sender.highlighted'?他们是有效的...这正是发件人参数的意思(这是按下的按钮) – borrrden 2012-07-30 03:20:20
我希望我能做到这一点,但我得到的错误......这将使我的生活变得如此简单! – moshikafya 2012-07-30 03:22:43
“错误”...非常描述你。也许你的问题应该是关于那些错误呢?我一直以这种方式切换选择。 – borrrden 2012-07-30 03:25:02