如何逐行显示文本 - Xcode

时间:2011-09-27 15:15:25

标签: objective-c xcode

我有一个简单的应用程序,我有一个按钮,按下时将在屏幕上显示单独的文本行。我设置一个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语句,但仍然没有快乐。

4 个答案:

答案 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,使下一个块也为真。根据您的风格指南或个人喜好,您可以:

  1. 将后来的if更改为else if
  2. 将所有nmbr++移至最后if
  3. 之后
  4. if内增加后返回。