iPhone:if ステートメントを使用しようとしていますが、うまくいきません
-
12-09-2019 - |
質問
(ほぼ解決しましたが、完全には解決していません)(私の一時的な解決策は、 void メソッドを使用し、すべてのボタンでそれを呼び出すことです。そうすることで、改善を行うときに個々のボタンの if ステートメントを編集する必要がなく、複数のボタンで使用されるコードを編集できます)
きっと単純な間違いだと思うのですが、見つかりません。
整数が 50 に達したときに、事前に定義したアラートを表示しようとしています。これは viewDidLoad メソッドで使用する if ステートメントです。
if(count == 50){
[alert show];
}
整数が 50 に達すると、何も起こりません。どこで間違ってしまったのでしょうか?
整数は IBAction で次のように変更されます。
count+=10;
if ステートメントを削除し、アラートを表示するままにすると、ビューが読み込まれるときにアラートが表示されます。したがって、警告は問題ではありません。
このコードが viewDidLoad メソッドで 1 回だけ実行され、後の段階で整数が 50 に変更された場合、整数が 50 になるまで待機せず、代わりに値が 50 ではないことが確認され、常に警戒してください。
では、コードで整数を監視し、アラートを実行するにはどうすればよいでしょうか いつ 整数は50ですが、整数が増加しているアクションのアラートを呼び出しませんか?
ああ、ところで、整数を増やすアクションで if ステートメントを呼び出してみましたが、それは機能しましたが、整数の数を増やすボタンが約 100 個あり、それぞれのボタンの値が 50 であるかどうかを確認するのは少しスペースがあるように思えますコピーアンドペーストには時間がかかります。また、整数が 50 に達したときに、単なるアラート以上のものが発生するようにする予定です。整数カウントの値が 50 であるかどうかを確認するだけのより効率的な方法があると確信しています。
解決
追加してみてください
if(count == 50){
[alert show];}
同じ IBAction で、カウントに 10 を追加した直後。
他のヒント
あなたが言う時
しかし、整数が 50 に達しても何も起こりません
これにより、整数値を変更していると思われます 後 -viewDidLoad メソッドが実行されます。if ステートメントはビューのロード時に 1 回だけ評価されるため、それ以降に整数の値を変更する場合は、整数を変更するものにアラート ビューを追加する必要があります。
これで問題ないはずです。Objective-C は C 上の薄い層であるため、有効な C 構文が機能するはずです。count とはどのような変数ですか?それを次のように定義したいとします。 int
, 、NSNumber ではありません。NSNumber は数値をラップするクラスなので、Objective-C オブジェクトとして使用できますが、== 構文を使用して数値を比較することはできません。
お役に立てば幸いです!
カウンタをプロパティにすると、値が変化するたびに起動するオブザーバーをセットアップできるようになります。そのオブザーバーで、アラートを起動するためのチェックを行うことができます。
試す
NSLog(@"count is %d",count);
そして問題があるかどうかを確認してください。count がおかしくなっているのか、警告しているのかを判断するのは難しいですが、問題は if ステートメント自体にあるわけではありません。
いくつか試してみること、
- if ステートメントにブレークポイントを設定する
- if ステートメントを次のように変更します
count >= 50
- count は本当に int ですか、それとも float ですか?
最も単純な答えは次のとおりです。増加するものをすべて持っています count
これを行うにはコントローラー内の 1 つのメソッドを実行し、そのメソッドでアラートを表示する時期が来たかどうかを確認します。
値の監視を伴うより複雑な答えは次のとおりです。 キーと値の監視. 。値を監視し、値が 50 に達したときにアラートで応答するようにオブザーバーを設定できます。ただし、これには、動作を処理するための中央メソッドを導入するだけよりも多くのコードが必要となり、より複雑でバグが発生しやすくなります。
理解できません。カウンタをインクリメントするコードでアラートを表示できないのはなぜですか?UIAlertView への参照が必要です...または、アラート保持コードがリッスンしている通知を投稿します。
ViewDidLoad は、ビューが読み込まれるとき、つまりビューが作成されるときのみ実行されます。その後、特別な状況がない限り、再度実行されることはありません。
ボタンを押すたびにカウントをチェックしてカウントを増やしたい場合は、IBAction で実行します。
次のようにカウンタをチェックするメソッドを作成できます
-(BOOL) checkCounter
{
return count == 50;
}
インクリメントした後、ボタン内で次のように呼び出します。
if ([self checkCounter])
{
//do stuff when it's 50
}