我想为一个按钮执行三种不同的操作。我在谷歌浏览也显示了一些不同的选项,但那些没有帮助。
我在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;
}
}
但它不起作用。有人能告诉我我做错了吗。
答案 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];
}