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 setText:value];

UITextField の値を value に戻します。

于 2012-09-21T23:04:38.140 に答える
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 に答える