如何从UIPickerView获取选定的值

我知道用UIDatePicker,你可以使用像这样的东西:

NSDate *myDate = picker.date; 

但我在我看来使用UIPickerView。 我怎样才能得到所选的价值? 或者我必须设置didSelectRowtypes的方法来做到这一点?

更新:此代码适用于具有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类中获取select器任意部分中所选项目的文本:

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

使用选定的项目

 [myPickerView selectedRowInComponent:0] 

所以使用myPickerView的第二部分中的当前选定值(可能是视图控制器的属性)来设置自定义单元格中标签的文本,

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

只要将两个:1s改为:2s等每个部分

您可以使用以下方法访问给定组件的选定行:

 - (NSInteger)selectedRowInComponent:(NSInteger)component 

否则,实现委托function是唯一的select。

这就是我所做的:

 - (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]]; }