2012-02-27 10 views
2

以下は私が使用しているコードです。 addQuanityを押すとm_labelが設定され、2つではなく1つが表示されます。 addWuantityをもう一度押すとm_labelが表示されます2. minusQuantityを押すとm_labelが2に変わりますが、minusQuanityを押すとm_labelが2に変わります。行方不明のアイデアは?カウンター++ /カウンター - 期待通りに動作しない

おかげで、 ライアン

NSInteger counter = 1; 
-(IBAction) addQuantity 
{ 
if (counter > 9) 
    return; 
[m_label setText:[NSString stringWithFormat:@"%d",++counter]]; 
} 

-(IBAction) minusQuantity 
{ 
if (counter < 1) 
    return; 
[m_label setText:[NSString stringWithFormat:@"%d",--counter]]; 
} 
+0

try int counter =。 1 – Shubhank

+0

ニットピッキング;あなたのタイトルを書き直そうとする - カウンターはカウンターと同じではない(あなたのタイトルが示唆する)。 – Jake

答えて

0

代わり

[m_label setText:[NSString stringWithFormat:@"%d",--counter]]; 

counter -=1; 
[m_label setText:[NSString stringWithFormat:@"%d",counter]]; 
3

はあなたがインクリメント(++)とデクリメント使用しています試してみてください( - )演算子プレフィックスとしてのまたは接尾辞として?接尾辞として使用すると(あなたの質問のタイトルに表示されているように)、あなたが記述しているように動作します。接頭辞として使用すると(質問の本文に表示されているように)、それらは意図したとおりに動作します。

接尾辞として使用すると、式は変数の元の値を返し、次にそれを加算/減算します。

NSInteger counter = 1; 
NSLog(@"%i", counter++); // will print "1" 
// now counter equals 2 

接頭辞として使用すると、式は1つを加算/減算し、更新された変数の値を返します。

NSInteger counter = 1; 
NSLog(@"%i", ++counter); // will print "2" 
// now counter equals 2 
1

コード行を保存して、プログラムロジックを理解しやすくします。

NSInteger counter = 1; 

-(IBAction) addQuantity 
{ 
if (counter <= 9) 
    [m_label setText:[NSString stringWithFormat:@"%d",++counter]]; 
} 

-(IBAction) minusQuantity 
{ 
if (counter >= 1) 
    [m_label setText:[NSString stringWithFormat:@"%d",--counter]]; 
}