1

我对 Objective-C 比较陌生,所以这可能真的很简单:我的应用程序中有一个显示弹药计数的文本框,所以每次用户点击开火按钮时,文本框中的数字都会下降由一(12 > 11 > 10 等)到 0。我尝试使用 for 和 if 语句,但它们不起作用(我可能使用了不正确的语法)。这是我现在正在使用的,但显然我需要

- (IBAction)fire {

    [ammoField setText:@"11"];

}

- (IBAction)reload {

    [ammoField setText: @"12"];

}
4

4 回答 4

1

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

于 2012-08-28T07:11:59.050 回答
0

设置实例整数

int x; 

它的设定值

x = 12;

改变方法

- (IBAction)fire {    
 [ammoField setText:[NSString stringWithFormat:@"%i",x]];
 x--;
}
于 2012-08-28T07:05:02.347 回答
0

使用 int 变量设置 viewdidload 中的 count 值

fire 方法将计数减 1

和 reload 方法将值返回到 12

相应地记录或使用值

于 2012-08-28T08:00:08.910 回答
-3

试试这个:-

  int i;
 -(void)ViewDidLoad 
{

  i=12;

}
 - (IBAction)fire 
{

  [ammoField setText:[NSString stringWithFormat:@"%d",i]];
  i--;
}

- (IBAction)reload {
i = 12;
[ammoField setText: [NSString stringWithFormat:@"%d", i]];
}

希望它对你有用。谢谢 :)

于 2012-08-28T07:04:12.597 回答