页面重定向取决于使用Objective-C选择的答案

时间:2013-01-21 08:56:43

标签: objective-c xcode

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

2 个答案:

答案 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];