0
    if (![value integerValue]) {
        textField.text = [[NSString alloc] initWithFormat:@"%d", *x];
        [slider setValue:(float)*x];
    }
    if ([value integerValue]>100) {
        textField.text = [[NSString alloc] initWithFormat:@"255"];
        [slider setValue:100.0];
    }
    if ([value integerValue]<0) {
        textField.text = [[NSString alloc] initWithFormat:@"0"];
        [slider setValue:0.0];
    }

    [textField setText:value];

文本字段的值仍然是输入的值,当我将其设置为新值时忽略。

有人可以解释为什么吗?

4

2 回答 2

1

您将textField.text在方法结束时覆盖该属性,无论它是否在您的案例决定之一下“更正”。

检查原始代码中的最后一行,并注意textField.text = xyz在语义上等于[textField setText:xyz].

要解决您的问题,请使用您的代码的更正版本:

if (![value integerValue]) {
    textField.text = [[NSString alloc] initWithFormat:@"%d", *x];
    [slider setValue:(float)*x];
}
else if ([value integerValue]>100) {
    textField.text = [[NSString alloc] initWithFormat:@"255"];
    [slider setValue:100.0];
}
else if ([value integerValue]<0) {
    textField.text = [[NSString alloc] initWithFormat:@"0"];
    [slider setValue:0.0];
}
else {
    textField.text = value;
}
于 2012-09-21T23:07:19.973 回答
1
[textField setText:value];

将 UITextField 值设置回值。

于 2012-09-21T23:04:38.140 回答