我有一个装有NSarray的UIPicker。这会将row selected
发送到文本字段。我想知道如何在选择器中更改行的名称。对不起,如果不清楚我很难清楚地解释我的意思。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
arrStatus = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", @"D", nil];
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//One column
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component
{
//set number of rows
return arrStatus.count;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
//set item per row
return [arrStatus objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSInteger selectedRow = [result selectedRowInComponent:0];
text1.text = [arrStatus objectAtIndex:selectedRow];
}
最佳答案
这是我认为接近您想要的示例。如果您有2个数组,一个带有国家名称,一个带有人口(以相同的顺序),则可以使用以下代码创建一个包含两个值的字典数组(实际上,您可以直接使用2个数组,但这要求您在进行任何更改时保持同步。最好这样做,如下所示:
NSMutableArray *arrStatus = [NSMutableArray array];
NSArray *nameArray = [NSArray arrayWithObjects:@"Albania",@"Brazil",@"Columbia", nil];
NSArray *popArray = [NSArray arrayWithObjects:@10.3,@200,@50, nil];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (int i=0; i<nameArray.count; i++) {
[dict setValue:[nameArray objectAtIndex:i] forKey:@"countryName"];
[dict setValue:[popArray objectAtIndex:i] forKey:@"poulation"];
[arrStatus addObject:[dict copy]];
}
现在,在您的选择器方法中,您可以执行以下操作:
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
//set item per row
return [[arrStatus objectAtIndex:row] valueForKey:@"countryNames"];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
text1.text = [arrStatus objectAtIndex:row] valueForKey:@"population"];
}
这会将人口数量输入文本字段,将国家/地区名称输入选择器。注意,我更改了在didSelectRow方法中获取值的方式-无需定义selectedRow,传递到该方法中的row参数已经具有该值。
我认为将数量放入popArray的方式仅适用于OS X 10.8,我不确定它是否适用于iOS,或者如果适用,则适用于哪个版本。例如,在早期版本中,您必须用[NSNumber numberWithFloat:10.3]替换@ 10.3。
关于objective-c - UIPicker标签与输出不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11749087/