我一直在谷歌上搜寻如何获取UIPickerView当前所选值,但无论哪里都是使用row:0等方式提到。
我有一个UIPickerView,其中填充了诸如"One","Two"等字符串值。
现在当我选择一个值,比如说"Two",是否有任何方法可以获取这个文本。
就像在UITextView中使用_textview.text一样。
我一直在谷歌上搜寻如何获取UIPickerView当前所选值,但无论哪里都是使用row:0等方式提到。
我有一个UIPickerView,其中填充了诸如"One","Two"等字符串值。
现在当我选择一个值,比如说"Two",是否有任何方法可以获取这个文本。
就像在UITextView中使用_textview.text一样。
每个UIPickerView都应该有一个代理。
你可以通过类似以下的方式向代理请求你的选择器选中行的标题:
UIPickerViewDelegate *delegate = yourPickerView.delegate;
NSString *titleYouWant = [delegate pickerView:yourPickerView titleForRow:[yourPickerView selectedRowInComponent:0] forComponent:0];
(这是基于您的组件编号为零的假设; 您自己的实现可能会有所不同。)
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);
}
}
NSInteger indexSelected = [myPicker selectedRowInComponent:0];
如果您有多个组件,请更改参数0(change the parameter 0 if you have more than one component)。
这是您数据数组中的索引值(myArray),就像您在委托方法中返回数据时使用的那样,例如:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return myArray[row];
}
Swift 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)]
etc.