【问题标题】:Get currently selected value of UIPickerView获取 UIPickerView 当前选中的值
【发布时间】:2014-04-18 07:47:31
【问题描述】:

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

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

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

就像 UITextView 中的 _textview.text 一样

【问题讨论】:

    标签: ios objective-c uipickerview


    【解决方案1】:

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

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

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

    (这是假设您的组件编号为零;您自己的实现可能不同)。

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

    【讨论】:

      【解决方案2】:
      func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
      {
          // selected value in Uipickerview in Swift
          let value=array[row]
          println("values:----------\(value)");
      
      }
      

      【讨论】:

      • 这如何回答这个问题?它甚至不是 obj-c 代码
      • 如果每个 Objective-C 问题在 Swift 中都有答案(其中没有那么多问答),那么许多 Swift 开发人员的生活会轻松很多。谢谢@Quad!
      • 感谢这个 Swift 版本
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        NSInteger indexSelected = [myPicker selectedRowInComponent:0];
        

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

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

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

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

        【讨论】:

          【解决方案5】:

          斯威夫特 3

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

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

          【讨论】:

            【解决方案6】:

            如果你使用数组来初始化你可以使用的选择器:

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

            等等

            【讨论】:

              猜你喜欢
              • 2021-06-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-01-09
              • 2014-03-22
              • 1970-01-01
              相关资源
              最近更新 更多