Несколько UIPickerViews в одном представлении с несколькими текстовыми полями

У меня сейчас проблема с кодировкой. Я хочу иметь два вида выбора в одном представлении с разными данными в каждом сборщике. Поэтому, когда я нажимаю на текстовое поле, появляется средство выбора с данными, а когда я нажимаю на другое текстовое поле, средство выбора появляется с другими данными. Мне удалось создать средство выбора, но в каждом текстовом поле появляются одни и те же данные. Я попытался сделать действие, которое разделяет данные сборщиков, но мне не удается заставить его работать.

- (void)viewDidLoad{   
    dataArray = [[NSMutableArray alloc] init];
    [dataArray addObject:@" "];
    [dataArray addObject:@"IG"];
    [dataArray addObject:@"G"];
    [dataArray addObject:@"VG"];
    [dataArray addObject:@"MVG"]; 
}

   - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)picker;{
        return 1;
    }

    - (void)pickerView:(UIPickerView *)picker didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
        currentTextField.text = [dataArray objectAtIndex:row];
        selectedText = currentTextField.text;        
    }

    - (NSInteger)pickerView:(UIPickerView *)picker numberOfRowsInComponent:(NSInteger)component;{
        return [dataArray count];
    }

    - (NSString *)pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component;{
        return [dataArray objectAtIndex:row];
}

Это код, который я использую для средства выбора, и я попытался сделать точную копию для других текстовых полей, но с другими данными.

А вот действие для текстовых полей, которое включает этот код:

- (IBAction)showPicker:(id)sender {

    picker = [[UIPickerView alloc] init];
    picker.showsSelectionIndicator = YES;
    picker.dataSource = self;
    picker.delegate = self;

    UIToolbar* toolbar = [[UIToolbar alloc] init];
    toolbar.barStyle = UIBarStyleBlackTranslucent;
    [toolbar sizeToFit];

    //to make the done button aligned to the right
    UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];


    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                   style:UIBarButtonItemStyleDone target:self
                                                                  action:@selector(doneClicked:)];


    [toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];

    //custom input view
    textField3.inputView = picker;
    textField3.inputAccessoryView = toolbar;
    textField5.inputView = picker;
    textField5.inputAccessoryView = toolbar; 
    textField7.inputView = picker;
    textField7.inputAccessoryView = toolbar; 
    textField9.inputView = picker;
    textField9.inputAccessoryView = toolbar;

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


person Pasod    schedule 06.06.2012    source источник


Ответы (1)


  1. Создайте 2 массива — по одному для каждого представления выбора. В этих массивах содержатся параметры, из которых пользователь должен иметь возможность выбирать. Это можно легко сделать с помощью NSArray.

  2. Настройте текстовые поля в Interface Builder (т. е. в файле раскадровки) и подключите IBAction из каждого текстового поля к функции в коде контроллера представления.

  3. В каждой из этих функций создайте экземпляр нового UIPickerView с содержимым массива, соответствующего текущему средству выбора.

  4. После того, как пользователь выбрал элемент, задайте для содержимого текстового поля значение массива, содержащееся в индексе, выбранном средством выбора.

  5. Удалить средство выбора из текущего представления.

person Sanjyot Shah    schedule 23.07.2012