представление выбора - преобразование единиц - PullRequest
0 голосов
/ 09 мая 2011

Я разрабатываю приложение с панелью выбора, которая скользит снизу (как лист действий). Мне нужно конвертировать 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....

} Как я могу сказать компилятору, какое значение было перед выбором?

Ответы [ 3 ]

0 голосов
/ 09 мая 2011

Если я понимаю вашу проблему.Вы хотите перехватить событие, когда пользователь меняет единицы измерения в вашем pickerView, передает информацию в представление, содержащее текстовое поле, и выполняет преобразование.

Таким образом, вы можете использовать NSNotificationCenter (документация здесь) .В вашем 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
}

Надеюсь, я вам помог.

0 голосов
/ 09 мая 2011

Добавить текст, указывающий единицы измерения в конце строки.

- (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....
}
0 голосов
/ 09 мая 2011

Когда вы выбираете строку в средстве выбора, она вызывает его метод делегата pickerView: didSelectRow: inComponent: Здесь вы можете изменить значение вашего текстового поля в зависимости от того, какая строка (литры, галлоны и т. Д.) Выбрана пользователем.Пожалуйста, обратитесь к справочнику по классу Apple для делегата UIPickerView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...