如何从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]]; }