2011-07-29 13 views
0

私はUILabelを持っています。その値に1を加えます。基本的には、ボタンを押したときにカウントアップします。誰かがマイナスボタンで私を助けてくれますか?このようにして、ユーザーが誤って追加ボタンを必要以上に押した場合は、間違いを差し引くことができます。これを試しましたが、ラベルのテキストは-1に設定されています。そして私はそれだけでその押すたびに1減算します:UILabelに表示されている整数から1を引いて

- (IBAction)subtractButton:(id)sender { 
    static int integerSaved; 
    integerSaved = integer; 
    integerSaved -= 1; 
    [label2 setText:[NSString stringWithFormat:@"%i", integerSaved]]; 
} 

答えて

1
-(void)subtract 
{ 
    label2.text = [NSString stringWithFormat:@"%d", [label2.text intValue]-1]; 
} 

UIButtonに "引く"。 Interface Builderを使用している場合は、このコードを試してください。

-(IBAction)subtract:(id)sender 
{ 
    label2.text = [NSString stringWithFormat:@"%d", [label2.text intValue]-1]; 
} 

私はこれをテストしていませんが、動作するはずです。がんばろう!

3

試してみてください、この:このコードは、あなたがInterface Builderのを使用していないこと、および手動でリンクされていることを前提としてい

- (IBAction)subtractButton:(id)sender { 
[label2 setText:[NSString stringWithFormat:@"%d",[label2.text intValue] - 1]]; 
} 
+0

ok私はこれを試しましたが、エラーが発生し、-1の後に最後の "]"が表示され、 "期待される識別子"と表示されます。コードで何が間違っているのか分かりますか?私はそれを理解できませんでしたか? – PengOne2

+0

@ PengOne2私の答えを更新しました。 –

+0

"NSString"の前に余分な括弧があります。これを取り出すと、intValueがNSStringで呼び出されるようになりました。 – James

0

算術演算を行うUIViewインスタンスの値を使用するのは、MVC -wayではありません。実際には、データモデルをビューから分離する必要があります。

intNSIntegerまたはNSNumberプロパティをクラスのどこかに公開すると、そのクラスはアプリのデータ値を保持するために使用されます。

特定のボタンのタッチイベントが発生した場合は、データプロパティを増分し、プロパティ内の内容に基づいてビューを更新する通知を発生させます。または、プロパティにobserverを追加します。オブザーバは、プロパティ値が変更されたときにビューを更新します。

MVCパターンに従うと、UIViewの値を取得し、それを整数に変換してから文字列に変換するよりも、「Apple」または「iOS」のような方法で行うことになります。

関連する問題