[英]How To Get Selected Value From 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];
您可以通过以下方式获取它:
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]
因此,使用 myPickerView 的第二部分中当前选择的值(可能是您的视图控制器的属性)在自定义单元格中设置标签的文本
[cell.label setText:[self pickerView:myPickerView titleForRow:[myPickerView selectedRowInComponent:1] forComponent:1]];
只需将每个部分的 :1s 更改为 :2s 等
这就是我所做的:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
selectedEntry = [allEntries objectAtIndex:row];
}
selectedEntry
是一个NSString
并将在选择器视图中保存当前选定的条目。 我是目标 C 的新手,但我认为这要容易得多。
您可以使用以下方法访问给定组件的选定行:
- (NSInteger)selectedRowInComponent:(NSInteger)component
否则,实现委托功能是唯一的其他选择。
您将需要以与您的应用程序相同的方式询问选择器的委托。 以下是我在 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!;
}
您必须使用didSelectRow
委托方法,因为UIPickerView
可以具有任意数量的组件。 没有“objectValue”或类似的东西,因为这完全取决于你。
获取选择器的选定标题:
let component = 0
let row = picker.selectedRow(inComponent: component)
let title = picker.delegate?.pickerView?(picker, titleForRow: row, forComponent: component)
NSInteger SelectedRow;
SelectedRow = [yourPickerView selectedRowInComponent:0];
selectedPickerString = [YourPickerArray objectAtIndex:SelectedRow];
self.YourTextField.text= selectedPickerString;
// if you want to move pickerview to selected row then
for (int i = 0; I<YourPickerArray.count; i++) {
if ([[YourPickerArray objectAtIndex:i] isEqualToString:self.YourTextField.text]) {
[yourPickerView selectRow:i inComponent:0 animated:NO];
}
}
-(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]];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.