Ответ 1
Вы можете получить его следующим образом:
NSInteger row;
NSArray *repeatPickerData;
UIPickerView *repeatPickerView;
row = [repeatPickerView selectedRowInComponent:0];
self.strPrintRepeat = [repeatPickerData objectAtIndex:row];
Я знаю, что с помощью UIDatePicker вы можете использовать что-то вроде:
NSDate *myDate = picker.date;
Но я использую UIPickerView на мой взгляд. Как я могу таким же образом выбрать значение? Или мне нужно настроить метод didSelectRow для этого?
Обновление: Этот код работает для сборщика с 1 компонентом:
NSInteger row;
NSString *weightSelected;
row = [repPicker selectedRowInComponent:0];
weightSelected = [pickerArray objectAtIndex:row];
Я устал от этого кода для моего сборщика с двумя компонентами, но он замерзает:
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];
Вы можете получить его следующим образом:
NSInteger row;
NSArray *repeatPickerData;
UIPickerView *repeatPickerView;
row = [repeatPickerView selectedRowInComponent:0];
self.strPrintRepeat = [repeatPickerData objectAtIndex:row];
Вы можете получить текст выбранного элемента в любом разделе сборщика, используя ту же функцию, что и pickerView, из вашего пользовательского класса 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]];
Просто измените оба: 1s на: 2s и т.д. для каждого раздела
Вы можете получить доступ к выбранной строке для данного компонента, используя следующий метод:
- (NSInteger)selectedRowInComponent:(NSInteger)component
В противном случае реализация функции-делегата является единственным другим вариантом.
Это то, что я сделал:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
selectedEntry = [allEntries objectAtIndex:row];
}
selectedEntry
является NSString
и будет удерживать текущую выбранную запись в элементе pickerview. Я новичок в объекте C, но я думаю, что это намного проще.
Вы должны использовать метод делегата didSelectRow
, потому что UIPickerView
может иметь произвольное количество компонентов. Нет "objectValue" или чего-то подобного, потому что это полностью зависит от вас.
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
weightSelected = [pickerArray objectAtIndex:row];
}
Это мой ответ
- (IBAction)Result:(id)sender
{
self.statusLabel.text = DataSource[[pickerViewTool selectedRowInComponent:0]];
}