私は簡単な電卓のiPhoneアプリケーションを開発しています。ちょうど練習目的のために。私はユーザーが入力した数字を格納するIBActionメソッドを持っています。全体的なコンセプトは、計算アプリケーションは、ユーザーが複数のアクションを実行することができるように保留中の作業を積み重ねることです。画面には次のような結果が表示されます:1 + 2 - 4 + 10 = X。NSMumberを格納する2つのNSMutableArrayと、オペレータの行動。ユーザーが演算子ボタンをクリックすると、新しい番号に対して作成された新しい配列要素が表示されます。ユーザが数字を入力すると、オペレータボタンが押されるまで、最後の配列要素が更新されます。NSNumberは正しい数値の代わりにゼロの値を格納します
問題は、すべての配列要素がゼロであることです。メソッドの中には、私が設定したときにそれが格納されていますが、メソッドが実行され、再び呼び出されたときに、入力された数値の代わりに0だけが引き継がれます。するNSNumberオブジェクトは配列のすべての番号が含まれている、存在しているが、すべての数は、ここで0
である方法である:私が間違って何見当もつかない
// Processing digit buttons
- (IBAction)clickDigit: (UIButton *) sender {
double currentNumber = [[numbers lastObject] doubleValue];
// Get the digit
double digit = sender.tag;
// Do nothing when the currentNumber and the digit both zero
if(currentNumber == 0 && digit == 0) {
return;
}
// When currentNumber is zero, override the value
if(currentNumber == 0) {
currentNumber = digit;
[numbers removeLastObject];
[numbers addObject: [NSNumber numberWithDouble: currentNumber ]];
// Else, add the digit to currentNumber
} else {
currentNumber = currentNumber * 10 + digit;
[numbers removeLastObject];
[numbers addObject: [NSNumber numberWithDouble: currentNumber ]];
}
// Update the screen
[self updateDisplay];
}
。助言がありますか? 事前に感謝は
UPDATE:それはclickClearメソッドが自動的に各ボタンを押した後に呼び出されていることが判明しました。値0を設定します。この記事の下の完全なソースコードをコメントセクションにリンクしました。唯一の問題は、なぜこのメソッドが呼び出されたかです。このメソッドを呼び出すのは何ですか?
UPDATE2:with the Saad's help私はこの問題を解決することができました。みんなありがとう!
「numbers」はどこに作成しますか? 'numbers'にアクセス(特に変更)する他のコードはありますか?もしそうなら、投稿してください。 –
私はデフォルトのViewControllerでそれを作成し、そのデフォルト値をviewDidLoadメソッドに設定しました。数字を変更する方法は他にありません。ここには完全なインターフェースと実装コードがあります。それは現時点では不完全であることに注意してください。 –
http://pastebin.com/tprwsd14とhttp://pastebin.com/yb5YtAhE –