it-swarm.com.ru

Как получить выбранное значение из UIPickerView

Я знаю, что с UIDatePicker вы можете использовать что-то вроде:

NSDate *myDate = picker.date;

Но я использую UIPickerView на мой взгляд. Как я могу так же получить выбранное значение? Или мне нужно настроить метод didSelectRow для этого?

Обновление: Этот код работает для сборщика с 1 компонентом:

    NSInteger row;
    NSString *weightSelected;

    row = [repPicker selectedRowInComponent:0];
    weightSelected = [pickerArray objectAtIndex:row];

Я устал этот код для моего выбора с 2 компонентами, но он замерзает:

    NSInteger row1, row2;
    NSString *weightSelected1;
    NSString *weightSelected2;

    row1 = [repPicker selectedRowInComponent:0];
    row2 = [repPicker selectedRowInComponent:1];
    weightSelected1 = [pickerArray objectAtIndex:row1];
    weightSelected2 = [pickerArray objectAtIndex:row2];
    NSString *weightSelected = [NSString stringWithFormat:@"%@.%@", weightSelected1, weightSelected2];
72
user594161

Вы можете получить его следующим образом:

NSInteger row;
NSArray *repeatPickerData;
UIPickerView *repeatPickerView;

row = [repeatPickerView selectedRowInComponent:0];
self.strPrintRepeat = [repeatPickerData objectAtIndex:row];
125
SJS

Вы можете получить текст выбранного элемента в любом разделе средства выбора, используя ту же функцию, что и средство выбора, из своего пользовательского класса ViewController:

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

используя выбранный элемент

[myPickerView selectedRowInComponent:0]

таким образом, чтобы установить текст метки в пользовательской ячейке, используя текущее выбранное значение из 2-го раздела myPickerView (вероятно, свойство вашего контроллера представления)

[cell.label setText:[self pickerView:myPickerView titleForRow:[myPickerView selectedRowInComponent:1] forComponent:1]];

Просто измените оба: 1 с: 2 с, и т.д. Для каждого раздела

33
nh32rg

Вот что я сделал:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    selectedEntry = [allEntries objectAtIndex:row];

}

selectedEntry является NSString и будет содержать выбранную в данный момент запись в окне выбора. Я новичок в Objective C, но я думаю, что это намного проще.

6
Harikrishnan

Вы можете получить доступ к выбранной строке для данного компонента, используя следующий метод:

- (NSInteger)selectedRowInComponent:(NSInteger)component

В противном случае реализация функции делегата является единственным другим вариантом.

5
drewag

Вы должны использовать делегированный метод didSelectRow, потому что UIPickerView может иметь произвольное количество компонентов. Там нет «objectValue» или что-то в этом роде, потому что это полностью зависит от вас.

0
Dave DeLong

Вам нужно будет спросить делегата сборщика так же, как это делает ваша заявка. Вот как я это делаю из своего UIPickerViewDelegate:

func selectedRowValue(picker : UIPickerView, ic : Int) -> String {

    //Row Index
    let ir  = picker.selectedRow(inComponent: ic);

    //Value
    let val = self.pickerView(picker,
                              titleForRow:  ir,
                              forComponent: ic);
    return val!;
}
0
J-Dizzle