2012-09-21 96 views
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]; 

textfield的值仍然是輸入的值,忽略當我將其設置爲新值時。這段代碼爲什麼沒有更新我的UITextField?

有人可以解釋爲什麼嗎?

+1

是文本框正確掛接到您的文本字段IB?我也不確定你在做什麼「initWithFormat:@」%d「,* x」。另外,不需要任何這些NSString alloc init - 只需使用textField.text = @「255」; – rdelmar

回答

1
[textField setText:value]; 

將UITextField值設置爲值。

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; 
} 
相關問題