0

1 つのビュー コントローラーに 2 つのピッカーがあります。データ用に 2 つの NSArray を使用します。

問題は、両方のピッカーで、titleForRow メソッドが呼び出されると、コンポーネント パラメータの値が常にゼロになるため、すべての行がデータ配列の最初の文字列を表示することです。

なぜこれが起こっているのですか、どうすれば修正できますか?

これらは私のデリゲートメソッドです:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    NSLog(@"%d",[pickerView tag]);
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:    (NSInteger)component
{
    NSLog(@"%d",[pickerView tag]);
    if ([pickerView tag] == 0)
        return providersList.count;
    else
        return amountList.count;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSLog(@"%d, %d",[pickerView tag],component);
    if ([pickerView tag] == 0)
        return [providersList objectAtIndex:component];
    else
        if ([pickerView tag] == 1)
            return [amountList objectAtIndex:component];
        else
            return nil;
}

xcode 4.3 と iOS5 を使用しています。

4

1 に答える 1

0

コンポーネントはピッカーのセクション数に使用され、行はコンポーネントの特定の行に使用されます。ピッカーに複数のセクションがある場合、コンポーネントに対して異なる値を受け取ります。Row は Row in コンポーネントを示します。

したがって、コンポーネントが 1 つしかない場合は、row を使用する必要があります。

[amountList objectAtIndex:row];
于 2012-08-03T10:09:05.457 に答える