2009-07-11 19 views
1

(ほとんど解決されていますが、それほどではありません) (私の一時的な解決策はvoidメソッドを使用し、そうすれば、複数のボタンで使用されているコードを編集することができます。ステートメントを個別に編集する必要があります。iPhone:ifステートメントを使用しようとしていますが、私のために機能しません。

私は本当に簡単なエラーですが、見つけられません。

整数が50に達すると、以前に定義された警告を表示しようとしています。これはviewDidLoadメソッドで使用するif文です。

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

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

整数はIBActionで、次のように変更されます。私は、if文を削除し、ちょうど表示するように警告を残す場合は時にビューをロード

count+=10; 

、それが表示されます。警告は問題ではありません。

誰かが、このコードをviewDidLoadメソッドで1回しか実行せず、後の段階で整数が50に変更されると、整数が50になるのを待たず、代わりに50これまでアラートを実行していません。

は、どのように私は、コードを使用して整数を見て、実行します警告 整数は50、 である。しかし整数を増加しているアクションでアラートを呼び出さないとき?

オハイオ州と私は、整数を増加させるアクションでif文を呼び出そうとしましたが、それは動作しますが、整数カウントを増やし、値がそれぞれのボタンごとに50かどうかを確認する約100個のボタンがありますすべてのコピーと貼り付けに少しのスペースと時間がかかるようです。また、整数が50に達したときに警告以上のことが起こることを計画しています。整数カウントの値が50かどうかをチェックするより効率的な方法があることを確かめてください。

+0

あなたは少しを提供する必要がありますもっと詳しく。私はiPhoneの開発者ではないが、この小さなスニペット自体は正しいようだ。カウントが50になると、それが合格となりますか? 「警告」とは何ですか?それはスタンドアロン(すなわち、無条件で)機能しますか? –

+0

この質問に答えるには十分な情報がありません。残りのコードを表示してください! –

答えて

1

あなたがカウントする10を追加した直後に同じIBActionで

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

を追加してみてください。

+0

はい、それは動作しますが、そのアクションでアラートを実行する必要はありません。カウントする値を追加する100個のボタンがあり、値が50かどうかを個々のボタンで確認するのではなく、viewDidLoadメソッドの値を見て、整数が50の場合に警告を実行する方法があると思います – Sam

+1

viewDidLoadは、ビューが読み込まれるとただ一度呼び出されるため、実際にあなたがしたいことはできません。 作成を試してみてください新しいメソッド - (void)showAlert { if(count == 50){ [alert show]; } [self showAlert]を追加します。あなたのIBActionsのそれぞれで。それでもいくつかのコピーと貼り付けが必要ですが、コードをちょっと整理してください。 –

+0

さて、ありがとう、私はそのような私のコードを設定して、それは今より確実にmaintainableです!ありがとう。 – Sam

1

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

希望に役立ちます!

+0

これはおかげさまですが、カウントはintと定義されています。 – Sam

0

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

を試してみて、問題があるかどうかを確認します。カウントが乱れているのか、警告しているのかを言うのは難しいですが、if文自体に問題はありません。

+0

アラートは問題ありません。私はifステートメントなしで試してみました。ビューがロードされました。あなたの提案されたコードはどこに実装されますか? – Sam

4

あなたは

を言うしかし、整数は50何も到達していないときに -viewDidLoadメソッドの実行後に整数値を変更していると信じて私をリード

を発生した場合。あなたのifステートメントは、ビューがロードされたときに一度だけ評価されるので、そのポイントの後に整数の値を変更する場合は、整数を変更しているものに警告ビューを追加する必要があります。

+0

はい整数は、viewDidLoadメソッドの実行後に変更されます。 整数が50に達したときにアラートを実行する別の方法はありますか?整数を変更するアクションで呼び出す必要はありませんか? – Sam

0

  • count >= 50
  • if文の変更if文にブレークポイントを設定しようとする物事のカップルは、本当にint型のカウントであるか、それがフロートのですか?
+0

カウントはintです。 – Sam

+0

私はあなたの提案を試みましたが、残念ながらそれらのどれも働いていませんでした。あなたが答えを思いつくのに役立つ場合、私の質問にもっと多くの情報を追加しました。 – Sam

0

もっとも簡単な答え:countを増やしてコントローラ内の1つの方法を実行し、その方法でアラートを表示するかどうかを確認します。

値を見ているより複雑な答え:Key-Value Observing。オブザーバを設定して、値が50に達するとアラートで応答することもできます。しかし、これはコードをより多く使用し、動作を処理する中心的な方法を導入するより複雑でバグが発生しやすくなります。

+0

はい、それはかなり複雑に思えますが、どこでも重要な価値観をカバーするチュートリアルは知っていますか?または、viewDidloadメソッドで使用できるコードを提案することができますか?私はあなたのドキュメントへのリンクを見てきましたが、それらは初心者にとってはかなり複雑です。 – Sam

0

私はそれを得ることができません、カウンターをインクリメントするコードで警告を表示できないのはなぜですか? UIAlertViewへの参照が必要です...アラート保持コードがリッスンしているという通知を投稿してください。

+0

私はカウンタをインクリメントするコードで警告を表示することができます。カウンタをインクリメントするボタンがたくさんあるだけです。それぞれを持つのではなく、viewDidLoadメソッドでその整数をチェックするコードがあるといいです整数がアラートをトリガーする値であるかどうかをチェックします。 – Sam

+0

すべてのボタントリガーメソッドでカウンタをインクリメントし、アラートを発生させる1つの中央メソッドを呼び出すことができます。 –

1

Check out Key-Value observing

あなたはカウンター財産加えた場合は、火災が値が変わるオブザーバセットアップすることができるはずです。そのオブザーバーで、あなたはアラートを発するためにあなたのチェックをすることができます。

0

ViewDidLoadは、ビューがロードされたとき(つまり作成時)にのみ実行されます。その後、特別な状況を除いて、再び実行されません。

ボタンを押してカウントを増やすたびにカウントを確認するには、IBActionでカウントします。

あなたはとても

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

のようなカウンターをチェックする方法を作り、あなたがそれをインクリメントした後そのようなあなたのボタンでそれを呼び出すことができます。

if ([self checkCounter]) 
{ 
//do stuff when it's 50 
} 
関連する問題