2

这段代码没有错误,但是当我单击按钮时,“if”语句中的任何内容都不起作用!它不会崩溃或显示错误...顺便说一句,我在 iPhone 应用程序上的 Xcode 中工作。

#import "MainView.h"

@implementation MainView

@synthesize MyButton2, MyMainTextLabel;
@synthesize MyButton3, MyMainTextLabel;
@synthesize MyButton2, Button2Label;
@synthesize MyButton2, Button3Label;
@synthesize MyButton3, Button2Label;
@synthesize MyButton3, Button3Label;


- (IBAction)Button2click {


    if(Button2Label.text == @"Hello There!") {

        MyMainTextLabel.text = @"\"Hey...!!\"";

        Button3Label.text = @"What a rude Penguin!";
        Button2Label.text = @"Hows a Goin?";
    }

}

- (IBAction)Button3click {

    if(Button3Label.text == @"Penguins SUCK!") {

        MyMainTextLabel.text = @"\"DONT TEST ME!!\"";

        Button3Label.text = @"Oh I Will!";
        Button2Label.text = @"Sorry I didnt mean to...";

    }
}

- (IBAction)buttonclick {

}
@end
4

4 回答 4

19

您不能将字符串与==. 仅当它们是完全相同的 NSString 对象时才有效,而不是当它们是两个相同的字符串时。采用[buttonLabel.text isEqualToString:@"Hello There!"]

于 2009-07-07T18:38:26.907 回答
8

当你写:

Button2Label.text == @"Hello There!"

您正在测试按钮标签和静态字符串之间的指针相等性。您想测试字符串相等性,而不是指针相等性:

if ([Button2Label.text isEqualToString: @"Hello There!") { ... }

也就是说,根据按钮的标签在您的操作方法中做出运行时决策是一个糟糕的设计,如果按钮的标签因任何原因(包括本地化)发生更改,您将遇到麻烦。

关闭发件人或发件人的标签是首选模式。

于 2009-07-07T18:45:29.343 回答
2

您不能使用 == 来比较字符串,它只是比较指针。

尝试:

if ([Button2Label.text compare:@"Hello There!"] == NSOrderedSame)

于 2009-07-07T18:39:46.983 回答
0

很可能 if 条件失败,尝试否定您的条件以测试该理论。如果它突然开始运行,请尝试调试标签上 text 属性的值。

于 2009-07-07T18:37:30.827 回答