在我的xib中,我有4个UI按钮,名为按钮1,2,3和4.这四个按钮连接了两个执行不同功能的四种不同的IBAction方法。
现在我还有一个名为“Save”的按钮。这也有一个不同的IBAction方法。
- (IBAction)Save:(id)sender
{
}
现在,我想检查上面的4个UIButtons中的哪一个已被点击。
为此我试着这样检查
- (IBAction)Save:(id)sender
{
if(sender == button1)
{
//Do this
}
else if (sender == button2)
{
//Do this
}
}
但这不起作用。我做错了什么。请帮帮我
此致 兰吉特。
答案 0 :(得分:1)
您可以在界面构建器中为每个按钮设置标记值,并将所有按钮的操作设置为此方法
//设置全局变量标志。
int flag;
- (IBAction)buttonClicked:(id)sender
{
switch ([sender tag])
{
case 0:
{
flag =0;
// implement action for first button
}
break;
case 1:
{
flag =1;
// implement action for second button
}
break;
case 2:
{
flag =2;
// implement action for third button
}
break;
//so on
default:
break;
}
}
用于保存按钮
- (IBAction)save:(id)sender
{
switch (flag)
{
case 0:
{
// first button clicked
}
break;
case 1:
{
// second button clicked
}
break;
case 2:
{
// third button clicked
}
break;
//so on
default:
break;
}
}
答案 1 :(得分:1)
将班级ivar定义为
UIButton *selectedBtn;
然后在你的IBActions中
- (IBAction)button1:(id)sender {
selectedBtn = sender // or button1
}
- (IBAction)button2:(id)sender {
selectedBtn = sender // or button2
}
- (IBAction)button3:(id)sender {
selectedBtn = sender // or button3
}
- (IBAction)button4:(id)sender {
selectedBtn = sender // or button4
}
- (IBAction)Save:(id)sender
{
//Check output of below statement to ensure you're getting a sender
NSLog(@"Sender: %@", sender);
if(selectedBtn == button1)
{
NSLog(@"Button 1 pressed");
//Do this
}
else if (selectedBtn == button2)
{
NSLog(@"Button 2 pressed");
//Do this
}
else if (selectedBtn == button3)
{
NSLog(@"Button 3 pressed");
//Do this
}
else if (selectedBtn == button4)
{
NSLog(@"Button 4 pressed");
//Do this
}
}
答案 2 :(得分:0)
你可以试试这个:
- (IBAction)Save:(id)sender
{
UIButton *pressedButton = (UIButton*)sender;
//Check output of below statement to ensure you're getting a sender
NSLog(@"Sender: %@", sender);
if([pressedButton isEqual:button1])
{
NSLog(@"Button 1 pressed");
//Do this
}
else if ([pressedButton isEqual:button2])
{
NSLog(@"Button 2 pressed");
//Do this
}
}
答案 3 :(得分:0)
在save方法中,选中其他4个按钮的Selected属性。如果您不想将按钮保持在选定状态,但只想查看它们是否在某个点被单击,则定义一个属性(例如数组)以跟踪在会话期间单击的按钮,并检查此属性在你的保存方法中。