if语句不适用于模拟器

时间:2013-08-14 03:12:06

标签: ios objective-c if-statement

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

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

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

1 个答案:

答案 0 :(得分:4)

您的代码排列不正确。

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

因为:

hellolabel.text = @"Alabama";

出现在if语句之前,它会将hellolabel.text设置为Alabama。但是因为if语句也包含在同一个动作中,它将继续运行它(因为这里的代码顺序运行),而不会停止。由于您只是将hellolabel.text设置为Alabama,因此您的if语句会将其设置为阿拉斯加,因为它确实符合其检查的条件(if([hellolabel.text isEqualToString:@"Alabama"]))。

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

- (IBAction)button1:(id)sender {

    if([hellolabel.text isEqualToString:@"Alabama"])
    {
        hellolabel.text = @"Alaska";
    }
    else
    {
        hellolabel.text = @"Alabama";
    }
}