我正在开发一个带有从底部滑动的选择器视图的应用程序(如操作表)。我需要转换3个单位(升,加仑和英制加仑)。该值取自文本字段,但我不知道如何告诉编译器从哪个单元开始。 (即...用户在文本字段中插入值,但如果他更改单位(usg或ig),则文本字段中的值会相应更改。
这是数组:
NSMutableArray *weightArray = [[NSMutableArray alloc] initWithObjects:@"", @"Ltr",@"Usg",@"Ig",
nil];
self.weightPickerViewArray = weightArray;
[weightArray release];`
这是选择器:
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if (row == 1) {
labelVolume.text = [weightPickerViewArray objectAtIndex:row];
//more code here....
}else if (row == 2){
labelVolume.text = [weightPickerViewArray objectAtIndex:row];
//more code here....
}else if (row == 3){
labelVolume.text = [weightPickerViewArray objectAtIndex:row];
//more code here....
} 如何判断编译器选择之前的值是什么?
答案 0 :(得分:0)
当你在选择器中选择一行时,它调用它的委托方法pickerView:didSelectRow:inComponent: 在这里,您可以根据用户选择的行(升,加仑等)更改文本字段的值。 请参阅UIPickerView委托的苹果课程参考
答案 1 :(得分:0)
如果我理解你的问题。当用户在pickerView中更改单位时,您希望捕获事件,将信息传递给包含文本字段的视图并执行转换。
因此您可以使用NSNotificationCenter (documentation here)。在您的pickerView中,当值更改时,请输入以下代码:
[[NSNotificationCenter defaultCenter] postNotificationName:@"unitValueChange" object:@"litres"];
在包含UITextField的视图中输入以下代码:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethodToExecute:) name:@"unitValueChange" object:self];
现在,当您的PickerView启动通知时,您的视图会启动此方法:
-(void)myMethodToExecute:(NSNotification *)notif{
NSString *myUnitSelected = notif.object
}
我希望我帮助过你。
答案 2 :(得分:0)
添加一个文本,指明字符串末尾的单位。
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if (row == 1) {
NSString *initalValue = labelVolume.text;
// Do your calculations here based on unit
NSString *updatedValue = urNewValue;
labelVolume.text = updatedValue;
//more code here....
}else if (row == 2){
NSString *initalValue = labelVolume.text;
// Do your calculations here based on unit
NSString *updatedValue = urNewValue;
labelVolume.text = updatedValue;
//more code here....
}else if (row == 3){
NSString *initalValue = labelVolume.text;
// Do your calculations here based on unit
NSString *updatedValue = urNewValue;
labelVolume.text = updatedValue;
//more code here....
}