web-dev-qa-db-ja.com

UIPickerViewの現在選択されている値を取得します。

私はUIPickerViewで現在選択されている値を取得する方法をググググしてきましたが、row:0などを使用して言及されているすべての場所で。

「One」、「Two」などの文字列値が入力されたUIPickerViewがあります。

ここで、「2」と言う値を選択すると、とにかくこのテキストを取得できます。

_textview.textであるUITextViewのように

11
rbk

すべてのUIPickerViewにはデリゲートが必要です。

そして、あなたはこのデリゲートにピッカーの選択された行のタイトルを求めることができます:

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

(これは[〜#〜]仮定[〜#〜]コンポーネント番号がゼロです;独自の実装は異なる場合があります)。

"pickerView:titleForRow:forComponent "メソッドはここにあります

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

}
16
Quad

まず、.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にコンポーネントが1つしかない場合(UITableViewのセクションに似たもの)、次の行で選択された「インデックス」を取得できます。

NSInteger indexSelected = [myPicker selectedRowInComponent:0];

(複数のコンポーネントがある場合は、パラメーター0を変更します)。

これは、データの配列(myArray)のインデックスであり、デリゲートメソッドからデータを返すために使用したものと同じです。

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

(または同様のデリゲートメソッド-attributedTitleForRow -viewForRow)

4
valfer

Swift

このコードを使用して現在のタイトルを取得できます

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