我有一个显示UILabel字符数的UITextfield。它可以工作,但是当x小于零时,我无法更改标签的文本颜色。实际上,我不知道答案在哪里,因为我可以记录/显示正确的数据,但-1,-2..处只有颜色不变。

- (void)updateLabelUsingContentsOfTextField:(id)sender {

    NSString *numberPlaceholder = [NSString stringWithFormat:@"%@", ((UITextField *)sender).text];

    int x = 43-[numberPlaceholder length];

    if (x <= 0) {

        self.charNumbers.textColor = [UIColor redColor];
        NSLog(@"IF DEV LOG 1 - INTEGER IS %d", x);

    }

    self.charNumbers.text = [NSString stringWithFormat:@"%d",x];

    NSLog(@"X INTEGER IS %d", x);

    if (x <= 43) {

        self.charNumbers.textColor = [UIColor blackColor];
           NSLog(@"IF DEV LOG 2 - INTEGER IS %d", x);
    }

}

最佳答案

[numberPlaceholder length]返回一个无符号整数,因此不正确的比较可能是下溢的结果。尝试将[numberPlaceholder length]强制转换为int,以便这些值具有相同的类型:

int x = 43 - (int)[numberPlaceholder length];

10-08 07:46