为什么这段代码没有更新我的UITextField?

时间:2012-09-21 22:52:41

标签: objective-c ios

    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];

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

有人可以解释一下原因吗?

2 个答案:

答案 0 :(得分:1)

[textField setText:value];

将UITextField值设置回值。

答案 1 :(得分: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;
}