我有四个UI按钮,我希望根据用户推送的按钮发生不同的事情。我已经尝试使用布尔值来检查按钮是否被按下,但它似乎没有工作。每个按钮的布尔代码基本上是:
-(IBAction)FirstChoice:(id)sender
{
wasClicked = YES;
}
然后在主要功能本身:
if(wasClicked)
{
returnView.text = @"Test";
}
然而,当我按下任何按钮时,测试文本不会出现。
答案 0 :(得分:1)
我认为您应该为所有按钮使用常见的“Touch up inside”插座功能...并为每个按钮设置不同的标签..例如
-(IBAction)FirstChoice:(id)sender // common "Touch up inside" action for all four buttons
{
UIButton *btn=(UIButton *)sender; //assuming that you have set tag for buttons
if(btn.tag==94)
{
//Do any thing for button 1
}
else if (btn.tag==93)
{
returnView.text = @"Test";
//Do any thing for button 2
}
else if (btn.tag==92)
{
//Do any thing for button 3
}
else
{
//Do any thing for button 4
}
}
答案 1 :(得分:0)
这与Vizllx的答案基本相同,但有点清楚。这假设您已为每个将调用tags
的按钮设置了IBAction
。由于这个方法将从UIButtons调用,我改变了参数的类型。如果您需要从其他类型的对象调用它,请将其更改为id
并进行手动投射。
- (IBAction)FirstChoide:(UIButton *)sender
{
const int BUTTON_TAG_1 = 92; // Identifier (tag) from a button
const int BUTTON_TAG_2 = 93; // Another one
// ...
int tag = sender.tag; // tag returns an NSInteger, so it casts automatically to an int
switch(tag)
{
case BUTTON_TAG_1:
// Do stuff like setting strings to another elements, for example:
// returnView.text = @"Test";
break;
case BUTTON_TAG_2:
// Again...
break;
default:
// Any other cases...
}
}