【问题标题】:iOS: Compare pressed button to label textiOS:将按下的按钮与标签文本进行比较
【发布时间】:2012-01-29 08:20:36
【问题描述】:

我有一个简单的函数来查看触摸的按钮是否与标签的文本相同:

- (IBAction) checkIt:(id)sender{
    UIButton *button = (UIButton *)sender;

    if(button.getText() == randomNumber.text){
        randomNumber.text = @"Nice.";
    }
    else{
        randomNumber.text = @"Try Again";
    }
}

其中“randomNumber”是一个标签。但是,这不起作用。我是 Cocoa/Objective-C 初学者,我不确定正确的语法是什么。

我愿意接受您希望/认为对像我这样的白痴有帮助的任何附加信息。 :)

四个按钮映射到此功能:Cow、Pig、Frog、Sheep。 “randomNumber”标签是从字符串数组“Cow,Frog”中随机生成的...

【问题讨论】:

    标签: objective-c ios syntax


    【解决方案1】:
    if(button.getText() == randomNumber.text)
    

    这永远不会起作用,因为这不是比较字符串的正确方法。 '==' 只比较内存地址,NSString 方法isEqualToString 实际比较的是字符串。

    另外,我将通过使用属性 titleLabel.text 来获取按钮文本。所以,我会这样尝试:

    - (IBAction) checkIt:(id)sender{
        UIButton *button = (UIButton *)sender;
    
        if([button.titleLabel.text isEqualToString:randomNumber.text]){
            randomNumber.text = @"Nice.";
        }
        else{
            randomNumber.text = @"Try Again";
        }
    }
    

    【讨论】:

    • 超级。为什么我们总是做 'if([...])' 而不仅仅是 'if(...)'?
    • 这要看你在()中做了什么比较。在这种情况下,我们使用的是 Objective-C 方法,所以我们必须这样做。如果你比较简单的整数 x 和 y,它看起来像这样:if (x = y)。
    • 顺便说一句,您可能需要检查您网站的服务器配置:)
    • 哦,是的。我在学校,没有时间更新。 :/ 有点疏忽,我知道。
    • 呃,这不会产生任何错误,但它不起作用......我做错了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多