如何从UIPickerView获取选定的值

时间:2011-04-20 04:38:52

标签: ios objective-c cocoa-touch

我知道使用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];

10 个答案:

答案 0 :(得分:126)

您可以通过以下方式获取它:

NSInteger row;
NSArray *repeatPickerData;
UIPickerView *repeatPickerView;

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

答案 1 :(得分:33)

您可以使用与自定义ViewController类相同的函数,从pickerView的任何部分获取所选项目的文本:

-(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等

答案 2 :(得分:6)

这就是我所做的:

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

    selectedEntry = [allEntries objectAtIndex:row];

}

selectedEntryNSString,并会在选择器视图中保留当前选定的条目。我是目标C的新手,但我认为这更容易。

答案 3 :(得分:5)

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

- (NSInteger)selectedRowInComponent:(NSInteger)component

否则,实现委托功能是唯一的另一种选择。

答案 4 :(得分:0)

您必须使用didSelectRow委托方法,因为UIPickerView可以包含任意数量的组件。没有“objectValue”或类似的东西,因为这完全取决于你。

答案 5 :(得分:0)

您需要以与申请相同的方式询问选择人的代表。以下是我在UIPickerViewDelegate中的表现:

pm.test("Schema is valid", function () {
    var data = pm.response.json();
    var schema = {
        ...
        my schema
        ...
    };
    tv4.validate(data, schema);
});

答案 6 :(得分:0)

获取选择器的选定标题:

let component = 0
let row = picker.selectedRow(inComponent: component)
let title = picker.delegate?.pickerView?(picker, titleForRow: row, forComponent: component)

答案 7 :(得分:0)

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

答案 8 :(得分:-2)

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   weightSelected = [pickerArray objectAtIndex:row];
}

答案 9 :(得分:-5)

这是我的回答

- (IBAction)Result:(id)sender 
{
   self.statusLabel.text = DataSource[[pickerViewTool selectedRowInComponent:0]];

}