簡體   English   中英

獲取 UIPickerView 當前選中的值

[英]Get currently selected value of UIPickerView

我一直在搜索如何在 UIPickerView 中獲取當前選定的值,但在任何地方都提到使用 row:0 等等。

我有一個 UIPickerView 填充了字符串值,如“一”、“二”等。

現在,當我選擇一個值來讓我們說“兩個”時,無論如何我可以得到這個文本。

就像在 UITextView 中,它是 _textview.text

每個 UIPickerView 都應該有一個委托。

您可以通過以下方式向此代表詢問您的選擇器選擇的行標題:

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

(這是假設您的組件編號為零;您自己的實現可能會有所不同)。

有關“ pickerView:titleForRow:forComponent ”方法的更多文檔,請參見此處

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

}

首先在 .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);
    }
}

如果 UIPickerView 只有一個組件(類似於 UITableView 的部分),您可以使用以下行檢索選擇的“索引”:

NSInteger indexSelected = [myPicker selectedRowInComponent:0];

(如果您有多個組件,請更改參數 0)。

這是數據數組 (myArray) 中的索引,與用於從委托方法返回數據的索引相同,如下所示:

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

(或類似的委托方法 -attributedTitleForRow -viewForRow)

斯威夫特 3

您可以使用此代碼獲取當前標題

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

如果您使用數組來初始化選擇器,您可以使用:

let p0 = pickerArray[0][pickerViewOutlet.selectedRow(inComponent: 0)]
let p1 = pickerArray[1][pickerViewOutlet.selectedRow(inComponent: 1)]
let p2 = pickerArray[2][pickerViewOutlet.selectedRow(inComponent: 2)]

等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM