我有一个装有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/

10-12 01:19