新手xcode:UILabel是null,但事实并非如此

时间:2012-07-19 19:58:05

标签: ios null label uilabel

我正在阅读一个看似非常简单的教程,但无法让它发挥作用。目标是在UI视图中使用IB创建标签和按钮。该标签应该说“Hello World”,当您单击该按钮时,它会将文本更改为“Hello iPhone”。当我实现代码时,标签不会改变。当我调试时,我发现标签是“空”但我无法弄清楚为什么......我真的很感谢你的帮助。

标签的标签值为“55”。

我的代码如下所示: 在接口文件中:

-(IBAction)buttonTapped;

在主文件中:

-(IBAction)buttonTapped{
    UILabel *label = (UILabel*) [window viewWithTag:55];
    NSLog(@"The label's text is %s",label.text); //my debug statement

    if([label.text isEqualToString:@"Hello World"])
        label.text = @"Hello iPhone";
    else
        label.text = @"Hello World"; 
}

3 个答案:

答案 0 :(得分:1)

假设您在ViewController中。我不知道你的窗户属性是什么。你也应该使用“%@”作为字符串。 Format Specifiers

-(IBAction) buttonTapped:(UIButton*)sender{    
    UILabel *label = (UILabel*) [self.view viewWithTag:55];
    NSLog(@"The label's text is %@",label.text); //my debug statement

    if([label.text isEqualToString:@"Hello World"])
        label.text = @"Hello iPhone";
    else
        label.text = @"Hello World";

}

答案 1 :(得分:0)

在行之间读取它听起来就像你的行动方法没有被解雇。

您没有明确表示您如何知道标签文本是空白的,但我们是否可以假设您确实让NSLog输出其结果?如果你没有,那么我会参考我的第一句......检查你是否在Interface Builder中正确连接了按钮,指向一个插座动作。

答案 2 :(得分:-1)

在@interface中你应该有:

IBOutlet UILabel *label;

然后在你的 - (IBAction)按钮中只需:

NSLog(@"The label's text is %s",label.text); //my debug statement

if([label.text isEqualToString:@"Hello World"])
        label.text = @"Hello iPhone";
else
        label.text = @"Hello World";
}