-3

我正在尝试制作一个按钮,第一次点击它说“阿拉巴马”,第二次点击“阿拉斯加”。我正在使用 if 语句,但是当我运行模拟器时,第一次单击时会出现“阿拉斯加”。我做错了什么?

- (IBAction)button1:(id)sender {
    hellolabel.text = @"Alabama";

    if([hellolabel.text isEqual:@"Alabama"])
        hellolabel.text = @"Alaska";
}
4

1 回答 1

4

您的代码排列不正确。

它实际上设置了两个州(阿拉巴马州,然后是阿拉斯加州),但因为它运行得如此之快,你看不到它设置了阿拉巴马州。

因为:

hellolabel.text = @"Alabama";

if声明之前,它将设置hellolabel.text为 Alabama。但是因为该if语句也包含在同一个动作中,所以它将继续运行它(因为这里的代码是按顺序运行的),而不会停止。由于您只是将 设置hellolabel.text为 Alabama,因此您的if语句会将其设置为 Alaska,因为它确实符合它正在检查的标准 ( if([hellolabel.text isEqualToString:@"Alabama"]))。

正确的代码以便正确检查,如下所示:

- (IBAction)button1:(id)sender {

    if([hellolabel.text isEqualToString:@"Alabama"])
    {
        hellolabel.text = @"Alaska";
    }
    else
    {
        hellolabel.text = @"Alabama";
    }
}
于 2013-08-14T03:21:12.600 回答