Iphone 每点击一次按钮,将文本框中的数字减少一个

Iphone 每点击一次按钮,将文本框中的数字减少一个,iphone,objective-c,ios,xcode,ipad,Iphone,Objective C,Ios,Xcode,Ipad,我对Objective-C比较陌生,所以这可能非常简单:我的应用程序中有一个显示弹药数量的文本框,因此每次用户点击开火按钮,文本框中的数字都会下降一(12>11>10等)到0。我曾尝试使用for和if语句,但它们不起作用(我可能使用了不正确的语法)。这是我现在正在使用的,但显然我需要 - (IBAction)fire { [ammoField setText:@"11"]; } - (IBAction)reload { [ammoField setText: @"12"]

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

- (IBAction)fire {

    [ammoField setText:@"11"];

}

- (IBAction)reload {

    [ammoField setText: @"12"];

}
试试这个:-

  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]];
}
希望它对你有用。谢谢:)

设置实例整数

int x; 
设置它的值

x = 12;
不要改变方法

- (IBAction)fire {    
 [ammoField setText:[NSString stringWithFormat:@"%i",x]];
 x--;
}

最简单的方法是将文本转换为一个数字,减量并重置文本,即用以下代码替换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;
}
//在接口中
NSInteger_弹药计数;
...
//实施中
-(i)火灾{
_弹药计数--;

如果(_ammoCount使用int变量设置viewdidload中的count值

火法将计数减少1

和重载方法将值返回到12


相应地记录或使用值

int
count;在您的
.h
文件中,在
viewDidLoad
count=something中,进行计数——在您的操作中,使用
stringWithFormat
以字符串形式显示计数值。我尝试了这个方法,它将整数降为-1,然后是-2,以此类推。我正在做的是:在.h文件中:
code
.m文件中的NSInteger\u ammoncount;
code
code
-(iAction)fire:(id)发送方{\u ammoncount-->[ammondisplay setText:[NSString stringWithFormat:@“%d”,_ammoncount]];]
code
为了澄清,文本框最初是12,我希望它在第一次点击时变为11,然后在第二次点击时变为10,以此类推,然后在0处停止。好的,我已经更改了代码,所以如果ammoCount达到0,则“开火”按钮将被禁用。我尝试了,第一次点击时它变为0。我如何让它先变为11?将ammoCount设置为等于12(我在哪里声明)?您是否在
viewDidLoad
方法中添加了
[自重新加载]