点击时UIButton会更改变量吗?

时间:2014-05-31 14:31:19

标签: ios objective-c cocoa-touch uibutton

我有多个UIButton s - redButtongreenButtonyellowButton等。当您点按其中一个按钮时,另一个UIImageView将更改其相应地,例如redImagegreenImageyellowImage

我该如何实现?我试过这个:

[self.redButton addTarget:self action:@selector(changeColour:) forControlEvents:UIControlEventTouchUpInside];

[self.greenButton addTarget:self action:@selector(changeColour:) forControlEvents:UIControlEventTouchUpInside];

[self.yellowButton addTarget:self action:@selector(changeColour:) forControlEvents:UIControlEventTouchUpInside];

changeColour

-(void)changeColour:(id)sender{
  // How do I know which button was pressed?
}

我想知道的是按下了哪个按钮。我更希望如此,当点击按钮时,它会更改名为int的{​​{1}}变量。所以,像:

如果点按colour,请更改greenButton。如果点按int = 1,请更改redButton

我搜索了StackOverflow和Google,结果表明要在int = 2 @selector中添加一个方法。那么我需要在action:中识别出哪个名为changeColour的按钮?

3 个答案:

答案 0 :(得分:2)

-(void)changeColour:(id)sender
{
    if (sender == self.redButton) {
        // redButton action
    } else if (sender == self.greenButton) {
        // greenButton action
    } else if (sender == self.yellowButton) {
        // yellowButton action
    }
}

进行了这类识别,引入了sender属性。

答案 1 :(得分:0)

您可以使用UIView的tag属性。 即。

self.redButton.tag = 1;
self.yellowButton.tag = 2;

在chnageColor方法中,您可以检索相同的内容。

-(void)changeColour:(id)sender
{
  // How do I know which button was pressed?
  UIButton *btn = (UIButton *)sender;
  if(btn.tag == 1)
  //Red is pressed..
  //and you can check for other tags...
}

答案 2 :(得分:0)

点击Interface Builder中的UIButton,然后在tag中更改其Attributes Inspector属性。然后在视图控制器中以编程方式访问此tag属性,以了解按下了哪个按钮。