我可能应该得到优秀程序员和伟大思想家的好评,因为即使我是Objective-C的总菜鸟,我现在的代码也是如此。无论如何,我正在做一个徽标测验,其中问题是随机顺序,然后对于每个问题,选择也是随机顺序。无论如何,我已经有了下面的代码来检查选择答案时页面应该重定向的位置:
- (IBAction)answerA:(UIButton *)sender {
if(imgView.image == [UIImage imageNamed:@"1.png"])
{
if([btnA.titleLabel.text isEqualToString:@"1"])
{
[btnA addTarget:self action:@selector(correctView) forControlEvents:UIControlEventTouchUpInside];
}
else
{
[btnA addTarget:self action:@selector(wrongView) forControlEvents:UIControlEventTouchUpInside];
}
}
else if(imgView.image == [UIImage imageNamed:@"2.png"])
{
if([btnA.titleLabel.text isEqualToString:@"2"])
{
[btnA addTarget:self action:@selector(correctView) forControlEvents:UIControlEventTouchUpInside];
}
else
{
[btnA addTarget:self action:@selector(wrongView) forControlEvents:UIControlEventTouchUpInside];
}
}
- (IBAction)answerB:(UIButton *)sender {
if(imgView.image == [UIImage imageNamed:@"1.png"])
{
if([btnB.titleLabel.text isEqualToString:@"1"])
{
[btnB addTarget:self action:@selector(correctView) forControlEvents:UIControlEventTouchUpInside];
}
else
{
[btnB addTarget:self action:@selector(wrongView) forControlEvents:UIControlEventTouchUpInside];
}
}
else if(imgView.image == [UIImage imageNamed:@"2.png"])
{
if([btnB.titleLabel.text isEqualToString:@"2"])
{
[btnB addTarget:self action:@selector(correctView) forControlEvents:UIControlEventTouchUpInside];
}
else
{
[btnB addTarget:self action:@selector(wrongView) forControlEvents:UIControlEventTouchUpInside];
}
}
}
这样可行,但问题是,您必须单击该按钮两次才能转到相应的页面。我知道问题是IBAction本身已经是一个单击按钮时触发的事件,然后我在条件语句中有代码,只有在再次单击该按钮时才会触发。我的问题是,如何修改这个,以便如果单击按钮一次,它会立即检查当前问题,然后检查正确答案?
答案 0 :(得分:4)
使用以下代码。我只写一种方法,你可以写第二种。
- (IBAction)answerA:(UIButton *)sender {
if(imgView.image == [UIImage imageNamed:@"1.png"])
{
if([btnA.titleLabel.text isEqualToString:@"1"])
{
[self correctView];
}
else
{
[self wrongView];
}
}
else if(imgView.image == [UIImage imageNamed:@"2.png"])
{
if([btnA.titleLabel.text isEqualToString:@"2"])
{
[self correctView];
}
else
{
[self wrongView];
}
}
答案 1 :(得分:1)
而不是设置按钮目标/操作:
[btnA addTarget:self action:@selector(correctView) forControlEvents:UIControlEventTouchUpInside];
在调用correctView
之前需要另一个按钮点击,为什么不直接调用该方法?
[self correctView];