2014-01-10 71 views
1

美好的一天!我只是想问,如何改变一个UILabel的背景颜色取决于在其上键入的数字?例如,如果数字是0,它就是蓝色,如果数字是1-2,它将变成绿色。如果数字是3-4,它将变成橙色。谢谢您的回答!更改UILabel的背景颜色

+0

请说明您的具体问题或添加额外的细节,突显正是你需要的。 –

+0

我想根据显示的数字更改标签的背景颜色。 – LevisBotio

+0

检查我的答案。 –

回答

2

UITextFieldDelegate没有didChange方法。您将不得不手动添加行为。你可以使用shouldChangeCharactersInRange:方法,但是我个人建议不要重写方法,除非你绝对必须。

[yourTextField addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged]; 

然后,在目标方法,设置背景色:

- (void)textFieldDidChange{ 

    if ([yourTextField.text isEqualToString:@"1"] || [yourTextField.text isEqualToString:@"2"]) 
     yourLabel.backgroundColor = [UIColor blueColor]; 
    else if (...) 
     . 
     . 
     //and so on 
} 
3

您可以设置这样的...

int number = [yourLbl.text intValue]; 

if(number == 0) 
    yourLbl.backgroundColor = [UIColor blueColor]; 
else if(number == 1 || number == 2) 
    yourLbl.backgroundColor = [UIColor greenColor]; 
else if(number == 3 || number == 4) 
    yourLbl.backgroundColor = [UIColor orangeColor]; 
else 
    yourLbl.backgroundColor = [UIColor redColor]; 
+0

他正在谈论**背景颜色**。不是文字颜色。\ –

+0

为背景颜色,它会是'[yourLbl setBackgroundColor:[UIcolor greenColor]];' – zbMax

+0

你得到什么错误? –

-1

尝试这种情况下,内部textfielddidendedition

-(void)textFieldDidEndEditing:(UITextField *)textField 
{ 
if(label.text isEqualToString:0) 
{ 
    label.backgroundColor=[UIColor blueColor]; 
} 
else 
{ 
label.backgroundColor=[UIColor blueColor]; 
} 
} 
+0

当比较对象值时,直接与'=='比较是无效的。对于字符串,可以有两个相同的字符串,但它们是不同的对象,在这种情况下,您的比较将失败。此外,你正在检查一个字符串与数字,所以我怀疑这甚至编译。另外,如果输入中有空格或0.0,会发生什么情况?或-0? – Abizern

0

你不能键入一个UILabel,使用的UITextField

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
     int number = [textField.text intValue]; 
     if(number == 0) { 
      label.backgroundColor = [UIColor blueColor]; 
     } else if(number == 1 || number == 2) { 
      label.backgroundColor = [UIColor greenColor]; 
     } else if(number == 3 || number == 4) 
      label.backgroundColor = [UIColor orangeColor]; 
     } 


    return YES; 
} 
+0

单个数字号码 – LevisBotio

+0

我的标签根据计算结果得到它的编号,所以我没有在上面输入 – LevisBotio

1

先将您的标签文本号转换为int,比使用backgroundColor标签背景。

int number = [yourLabel.text intValue]; 

if(number == 0) 
    yourLabel.backgroundColor = [UIColor blueColor]; 
else if(number == 1 || number == 2) 
    yourLabel.backgroundColor = [UIColor greenColor]; 
else if(number == 3 || number == 4) 
    yourLabel.backgroundColor = [UIColor orangeColor]; 
else 
    yourLabel.backgroundColor = [UIColor grayColor];