0

我现在可能应该被优秀的程序员和伟大的头脑击中,因为我当前的代码看起来如何,即使我是 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 本身已经是一个在单击按钮后触发的事件,然后我在条件语句中包含代码,只有在再次单击按钮时才会触发。我的问题是,我该如何修改它,以便如果单击按钮一次,它会立即检查当前问题,然后检查正确答案?

4

2 回答 2

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];
  }
}
于 2013-01-21T10:20:45.177 回答
1

而不是设置按钮目标/动作:

[btnA addTarget:self action:@selector(correctView) forControlEvents:UIControlEventTouchUpInside];

在调用之前需要另一个按钮点击correctView,为什么不直接调用该方法?

[self correctView];
于 2013-01-21T09:53:33.447 回答