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];
        }
    }
}

これは機能しますが、問題は、対応するページに移動するためにボタンを 2 回クリックする必要があることです。問題は、ボタンがクリックされるとIBAction自体がすでにトリガーされるイベントであることを知っているため、ボタンが再度クリックされた場合にのみトリガーされる条件ステートメント内にコードがあります。私の質問は、ボタンが1回クリックされた場合に現在の質問をすぐにチェックしてから正しい答えをチェックするように、これを変更するにはどうすればよいですか?

4

2 に答える 2

4

次のコードを使用します。私は 1 つのメソッドだけを書いています。2 番目に書くことができます。

- (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 に答える