对单个按钮执行三种不同的操作

时间:2015-05-22 11:03:48

标签: ios xcode ios7

我想为一个按钮执行三种不同的操作。我在谷歌浏览也显示了一些不同的选项,但那些没有帮助。

我在CustomUIButton中声明了NSInteger,即在IBAction中单击并初始化为0。 这是代码。

-(void)changeStudentAction:(id)sender
{
    CustomUIButton *button=sender;
    NSInteger flag = 0;
    button.click=0;
    if(button.click==0)
    {
        button.click=1;
        [button setSelected:NO];
        [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
        flag=0;
    }
    else if (button.click==1)
    {
        button.click=2;
        [button setSelected:YES];
        [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
        flag=1;
    }
    else if (button.click==3)
    {
        button.click=0;
        [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
        [button setSelected:YES];
        flag=3;
    }

}

但它不起作用。有人能告诉我我做错了吗。

6 个答案:

答案 0 :(得分:0)

您正在为每个操作设置button.click = 0。 所以每次点击它都会被设置为零。 相反,您可以在视图控制器中保留一个单独的变量,而不是在按钮上单击属性。希望这会有所帮助: - )

答案 1 :(得分:0)

根据你的代码, 它一直在继续

if(button.click==0)
{
button.click=1;
[button setSelected:NO];
[button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
flag=0;
}

我会给你更好的建议而不是“点击”你可以使用“标签”选项,这是uibutton的一个属性。 首先,您必须在.h文件中定义自定义按钮,然后在- (void)viewDidLoad中设置tag = 0  方法

答案 2 :(得分:0)

CustomUIButton *button;
        NSInteger flag = 0;
        button.click=0;  

以这种方式使用它,或者从所有这些问题中简单地使用其他变量作为 因为每次这个函数每次调用它都为零,所以在函数之外使用它并使用它

  NSInteger flag = 0;
  int counter = 0;
-(void)changeStudentAction:(id)sender
    {

    if(counter ==0)
    {
        counter =1;
        [button setSelected:NO];
        [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
        flag=0;
    }
    else if (counter ==1)
    {
        counter =2;
        [button setSelected:YES];
        [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
        flag=1;
    }
    else if (counter ==3)
    {
        counter =0;
        [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
        [button setSelected:YES];
        flag=3;
    }

}

答案 3 :(得分:0)

在开始按钮标记中为零,然后按以下方式更改

-(void)changeStudentAction:(id)sender{
     CustomUIButton *button=sender;
     NSInteger flag = 0;
     if(button.tag==0)
     {
         button.tag=1;
     }     
     else if (button.tag==1)
     {
        button.tag=2;
     }
     else if (button.click==3)
     {
          button.tag=0;
     }
}

答案 4 :(得分:0)

全局定义button.click=0;,因此最初它的值将为零,之后它将增加。

@interface yourclass : superclass
{
   int click;
}


- (void)viewDidLoad{

      click=0;

}

-(void)changeStudentAction:(id)sender
{
CustomUIButton *button=sender;
NSInteger flag = 0;

if(click==0)
{
    click=1;
    [button setSelected:NO];
    [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];
    flag=0;
}
else if (button.click==1)
{
    click=2;
    [button setSelected:YES];
    [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];
    flag=1;
}
else if (button.click==3)
{
    click=0;
    [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];
    [button setSelected:YES];
    flag=3;
}

}

答案 5 :(得分:0)

请尝试以下代码可能会解决您的问题。

-(void)changeStudentAction:(id)sender
{
    CustomUIButton *button=sender;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.2];
       [button setBackgroundImage:[UIImage imageNamed:@"Absent_on_coloured.png"] forState:UIControlStateNormal];

        [UIView setAnimationDuration:0.4];
        [button setBackgroundImage:[UIImage imageNamed:@"Present_on_coloured.png"] forState:UIControlStateNormal];

        [UIView setAnimationDuration:0.6];
        [button setBackgroundImage:[UIImage imageNamed:@"Late_on_coloured.png"] forState:UIControlStateNormal];

        [UIView commitAnimations];

}