0

我有一个带有许多 UIButtons 的 uiviewcontroller,这些 UIButtons 旨在被选中并按住直到再次被触摸。我在 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;
}
}

你会注意到这只是一个伪代码,因为我不能真正做“sender.selected”或“sender.highlighted”,但这就是我想要完成的。

有什么方法可以做到这一点吗?我不想创建 30 个“tapButton”方法(这就是我拥有的 UIButton 的数量,是的……)来管理每个 UIButton 的状态。

非常感谢!

4

3 回答 3

2

您可以tag像这样设置每个按钮的

button1.tag = 1;
button2.tag = 2;
....

然后在你的选择器中

- (IBAction) tapButton:(id)sender
{
   switch((UIButton*)sender.tag){
     case 1:
     .....
   }
}
于 2012-07-30T03:12:42.583 回答
0
UIButton * selectedButton = [[UIButton allo]init];
/*for removing old highlight*/
selectedButton.higlighted = NO;
selectedButton = sender;
/*for setting new button highlight*/ sender.selected = YES

上面的代码会帮助你。这里使用新按钮来存储最后一个按钮状态

于 2012-07-30T05:05:51.423 回答
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;
    }
}
于 2012-07-30T07:12:23.007 回答