最も簡単な方法は、テキストを数値に変換し、デクリメントしてテキストをリセットすることです。つまり、fire メソッドのコードを次のように置き換えます。
NSInteger ammoCount = [ammoField.text integerValue];
ammoCount--;
ammoField.text = [NSString stringWithFormat:@"%d", ammoCount];
しかし、これをしないでください。赤ん坊のスティーブ ジョブズが泣くからです。
より良い方法はUIInteger
、弾丸の数を追跡するタイプのクラスに新しい変数を追加することです。つまり:
// in interface
NSInteger _ammoCount;
...
// in implementation
- (IBAction)fire {
_ammoCount--;
if (_ammoCount <= 0) {
_ammoCount = 0;
fireButton.enabled = NO;
}
[ammoField setText: [NSString stringWithFormat:@"%d", _ammoCount]];
}
- (IBAction)reload {
_ammoCount = 12;
[ammoField setText: [NSString stringWithFormat:@"%d", _ammoCount]];
fireButton.enabled = YES;
}
reload
ああ、 _ammoCount と ammoField が確実に初期化されるように、早い段階で呼び出すことを忘れないでください。