1

(ほぼ解決しましたが、完全ではありません) (私の一時的な解決策は、void メソッドを使用してすべてのボタンで呼び出すことです。そうすることで、複数のボタンで使用されるコードを編集することができます。声明)

私が犯した本当に単純なエラーだと思いますが、見つけることができません。

整数が 50 に達したときに、以前に定義したアラートを表示しようとしています。これは、viewDidLoad メソッドで使用する if ステートメントです。

if(count == 50){
    [alert show];
}

整数が 50 に達すると、何も起こりません。どこで間違ったのですか?

整数は IBAction で次のように変更されます。

 count+=10;

if ステートメントを削除してアラートを表示したままにすると、ビューの読み込み時にアラートが表示されます。したがって、アラートは問題ではありません。

このコードが viewDidLoad メソッドで一度だけ実行され、整数が後の段階で 50 に変更された場合、整数が 50 になるのを待たず、代わりに値が 50 ではないことを確認し、これまでにアラート。

では、コードで整数を監視し、整数が 50 のときにアラートを実行するにはどうすればよいでしょうか。ただし、整数を増やしているアクションでアラートを呼び出さないでください。

ああ、ちなみに、整数を増やすアクションでifステートメントを呼び出してみましたが、それは機能しますが、整数カウントを増やす約100個のボタンがあり、すべてのボタンの値が50であるかどうかを確認するのは少しスペースがあるようですコピーと貼り付けのすべてに時間がかかります。また、整数が 50 に達したときにアラートを発生させるだけでなく、整数カウントの値が 50 であるかどうかを確認するより効率的な方法があると確信しています。

4

9 に答える 9

4

あなたが言う時

しかし、整数が 50 に達すると何も起こりません

-viewDidLoad メソッドの実行に整数値を変更していると思われます。if ステートメントは、ビューが読み込まれるときに一度だけ評価されるため、その時点以降に整数の値を変更する場合は、整数を変更しているものにアラート ビューを追加する必要があります。

于 2009-07-11T23:43:40.190 に答える
1

追加してみる

if(count == 50){
    [alert show];}

count に 10 を追加した直後の同じ IBAction で。

于 2009-07-12T00:55:55.963 に答える
1

これで問題ありません。Objective-C は C の上の薄いレイヤーなので、有効な C 構文が機能するはずです。カウントとはどのような変数ですか? intNSNumber ではなく、として定義します。NSNumber は、Objective-C オブジェクトとして使用できるように数値をラップするクラスですが、== 構文を使用してそれらを比較することはできません。

それが役立つことを願っています!

于 2009-07-11T23:40:24.377 に答える
0

ViewDidLoad は、ビューがロードされたとき、つまりビューが作成されたときにのみ実行されます。その後は、特別な事情がない限り再実行されません。

ボタンを押すたびにカウントをチェックしてカウントを増やしたい場合は、IBAction で行います。

そのようにカウンターをチェックするメソッドを作成できます

-(BOOL) checkCounter
{
  return count == 50;
}

そして、インクリメントした後、ボタンで次のように呼び出します。

if ([self checkCounter])
{
//do stuff when it's 50
}
于 2011-02-05T02:08:19.067 に答える
0

最も簡単な答え: インクリメントするすべてのものをcountコントローラ内の 1 つのメソッドに渡させ、そのメソッドにアラートを表示する時間かどうかをチェックさせます。

値を監視することを含むより複雑な答え: Key-Value Observing。値を監視し、値が 50 に達したときにアラートで応答するようにオブザーバーを設定することもできます。ただし、これには、動作を処理するための中央メソッドを導入するよりも、より多くのコードが必要になり、より複雑になり、バグが発生しやすくなります。

于 2009-07-12T02:02:50.693 に答える
0

わかりません。カウンターをインクリメントするコードでアラートを表示できないのはなぜですか? UIAlertViewへの参照が必要です...または、アラート保持コードがリッスンしている通知を投稿します。

于 2009-07-12T02:12:23.273 に答える
0

試す

NSLog(@"count is %d",count); 

問題があるかどうかを確認します。count がめちゃくちゃなのかアラートなのかはわかりませんが、問題は if ステートメント自体にあるわけではありません。

于 2009-07-11T23:40:55.967 に答える
0

試してみるいくつかのこと、

  • if 文にブレークポイントを設定する
  • if 文を次のように変更しますcount >= 50
  • count は本当に int ですか、それとも float ですか?
于 2009-07-11T23:44:41.263 に答える