最简单的方法是将文本转换为数字,递减并重置文本,即将 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 被初始化。