我有一个简单的应用程序,我有一个按钮,按下时将在屏幕上显示单独的文本行。我设置一个int = 0并使用一个if语句,每行加1。我的问题是按下1个按钮后显示所有行,我想按一个按钮显示一行,下一个按钮按下一行显示,依此类推:
int nmbr = 0;
int myInt1 = [textfield.text intValue];
if (nmbr == 0) {
tString = [[NSString alloc] initWithFormat:@"111111111111%i x 1 = %i",myInt1,myInt1];
nmbr++;
}
if (nmbr == 1){
tString1 = [[NSString alloc] initWithFormat:@"222222222222%i x 2 = %i",myInt1,myInt1*2];
nmbr++;
}
if (nmbr == 2){
tString2 = [[NSString alloc] initWithFormat:@"%i x 3 = %i",myInt1,myInt1*3];
nmbr++;
}
我是新手,所以非常感谢任何帮助。
更新: 到目前为止,感谢大家的帮助,我不确定我是否已经很好地解释了这个问题......可能已经把它编程错了。我在屏幕上只有一个按钮,每次按下它都会将空白标签更改为文本字符串。我在每个if语句中递增,以便在下一个按钮按下nmbr = 2然后文本标签2将被修改,再次按nmbr = 3文本标签3将被修改,依此类推。代码中似乎没有分离,所以在按下按钮时所有文本标签都被修改。我不确定是否可以在单个按钮上编码多个操作,或者是否有更好的方法来执行此操作。
我已经尝试了其他if语句,但仍然没有快乐。
答案 0 :(得分:2)
将nmbr++;
移至方法的末尾,而不是将其放在每个if
语句中。如果你不想每次都增加它,那么使用bool来跟踪你是否要增加它。此外,nmbr
需要是成员变量(即类级别)而不是方法级别。如果是方法级别,则不会在调用之间保存其状态。
答案 1 :(得分:1)
你的结果是正常的,因为如果测试是一个接一个地进行的话。程序将继续第一个if,递增的nmbr,退出if并点击下一个if。
它可以通过将nmbr增量移出“if”(如mydogisbox所述)来工作,但你仍然必须将变量声明为静态。 像这样:
static int nmbr = 0;
int myInt1 = [textfield.text intValue];
if (nmbr == 0) {
tString = [[NSString alloc] initWithFormat:@"111111111111%i x 1 = %i",myInt1,myInt1];
}
if (nmbr == 1){
tString1 = [[NSString alloc] initWithFormat:@"222222222222%i x 2 = %i",myInt1,myInt1*2];
}
if (nmbr == 2){
tString2 = [[NSString alloc] initWithFormat:@"%i x 3 = %i",myInt1,myInt1*3];
nmbr = 0; // if you have no other lines and you want to start from begining when the user press the button more than 3 times.
}
nmbr++;
答案 2 :(得分:0)
在Interface Builder中创建所需数量的按钮,将它们声明到.h
文件中,为每个按钮创建方法-(void)firstButtonClick:(UIButton)sender
,-(void)secondButtonClick:(UIButton)sender
并将代码放入这些方法中。
答案 3 :(得分:0)
问题是你在if中递增然后让它下降到下一个。查看流程:nmbr是一个,所以执行该块,将nmber增加到1,使下一个块也为真。根据您的风格指南或个人喜好,您可以:
if
更改为else if
。nmbr++
移至最后if
。if
内增加后返回。