获取UIPickerView的当前选定值

时间:2014-04-18 07:47:32

标签: ios objective-c uipickerview

我一直在谷歌搜索如何在UIPickerView中获取当前选择的值,但在任何地方都提到使用row:0等等。

我有一个UIPickerView填充了字符串值,如“One”,“Two”等。

现在,当我选择一个值让我们说“两个”时,无论如何我都可以得到这个文本。

与UITextView类似,它是_textview.text

6 个答案:

答案 0 :(得分:22)

每个UIPickerView都应该有一个委托。

您可以通过以下方式向该代表询问您的选择者所选行标题:

  UIPickerViewDelegate *delegate = yourPickerView.delegate;
  NSString *titleYouWant = [delegate pickerView:yourPickerView titleForRow:[yourPickerView selectedRowInComponent:0] forComponent:0];

(这是 ASSUMING 您的组件编号为零;您自己的实现可能会有所不同。)

More documentation on the "pickerView:titleForRow:forComponent" method can be seen here

答案 1 :(得分:16)

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
    // selected value in Uipickerview in Swift
    let value=array[row]
    println("values:----------\(value)");

}

答案 2 :(得分:5)

首先在.h文件中添加UIPickerViewDatasource和UIPickerViewDelegate

然后在.m中添加行

self.myPickerView.delegate = self;

现在按其对象分配数组。

NSArray *arrOfAge = [[NSArray alloc]initWithObjects:@“one”,@”two”, nil];

这是委托方法

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [arrOfAge count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    NSString *titleRow;
    titleRow = [NSString stringWithFormat:@"%@", [arrOfAge objectAtIndex:row]];
    return titleRow;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    selectedRow = row;
}

此IBAction btnDone从pickerView返回选定的行。

- (IBAction)btnDone:(id)sender
{
    NSUInteger num = [[self.myPickerView dataSource] numberOfComponentsInPickerView:self.myPickerView];
    NSMutableString *text = [NSMutableString string];
    for(NSUInteger i =0;i<num;++i)
    {
        NSUInteger selectRow = [self.myPickerView selectedRowInComponent:i];
        NSString *ww = [[self.myPickerView delegate] pickerView:self.myPickerView titleForRow:selectRow forComponent:i];
        [text appendFormat:@"%@",ww];
        NSLog(@"%@",text);
    }
}

答案 3 :(得分:4)

如果UIPickerView只有一个组件(类似于UITableView的部分),你可以检索用以下行选择的“索引”:

NSInteger indexSelected = [myPicker selectedRowInComponent:0];

(如果您有多个组件,请更改参数0)。

这是您的数据数组(myArray)中的索引,与您用于从委托方法返回数据的索引相同,如:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
 return myArray[row];
}

(或类似的委托方法-attributeTitleForRow -viewForRow)

答案 4 :(得分:2)

Swift 3

您可以使用此代码获取当前标题

self.textview.text = self.pickerView(self.pickerViewOutlet, titleForRow: self.pickerViewOutlet.selectedRow(inComponent: 0), forComponent: 0)

答案 5 :(得分:0)

如果使用数组初始化选择器,则可以使用:

useCallback