0

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];
}
4

1 に答える 1

1

これは、あなたが望むものに近いと私が思うものの例です。1 つは国名、もう 1 つは人口 (同じ順序) の 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 を定義する必要はありません。メソッドに渡される行引数には、既にその値があります。

人口数をpopArrayに入れる方法は、OS X 10.8でのみ機能すると思います.iOSで機能するかどうか、または機能する場合はどのバージョンで機能するかはわかりません. たとえば、以前のバージョンでは @10.3 を [NSNumber numberWithFloat:10.3] に置き換える必要があります。

于 2012-07-31T22:21:08.813 に答える