0

ダブルピッカーと、ピッカーの各コンポーネントがどの行にあるかを更新する2つのNSInteger変数があります。iPhoneシミュレーター(実際のiPhoneでテストしていません)では、行を選択すると(つまり、下または上をクリックすると)番号は問題ありませんが、スピンすると、通常は実際の行番号から数つ離れた行番号が表示されます。これが私が持っているものです:

- (UIView *)pickerView:(UIPickerView *)pickerView
        viewForRow:(NSInteger)row
      forComponent:(NSInteger)component reusingView:(UIView *)view {

if (component == kSuitComponent) {
    UIImage *image = self.suitImages[row];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self theSuitRow];
    return imageView;
}
else {
    NSString *text = self.cardNumber[row];
    UILabel *label = [[UILabel alloc] init];
    [self getCardRow];
    label.text = text;
    return label;
}
}
 -(void) getCardRow {
    cardRow = [_doublePicker selectedRowInComponent:kCardNumberComponent];
}
-(void) theSuitRow {
suitRow = [_doublePicker selectedRowInComponent:kSuitComponent];

}
4

1 に答える 1

0

次のようにする必要があります。

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

    if (component == kSuitComponent) {
        UIImage *image = self.suitImages[row];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        return imageView;
    }
    else {
        NSString *text = self.cardNumber[row];
        UILabel *label = [[UILabel alloc] init];
        label.text = text;
        return label;
    }
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    if (component == kCardNumberComponent) {
        cardRow = row;
    } else {
        suitRow = row;
    }
} 
于 2013-03-15T07:32:54.483 に答える