0

アプリに 2 つの UIpicker ビューがあり、データを保存した後、最後に選択した行をピッカーに表示させたいと考えています。この selectRow:inComponent:animated: メソッドを使用していますが、このメソッドを正確にどこで呼び出すのでしょうか?

ビューでDidLoad:

if (self.pickerView == nil) {
    self.pickerView = [[UIPickerView alloc] init];
    self.pickerView.delegate = self;
    self.pickerView.showsSelectionIndicator = YES;

pickerView:viewForRow:forComponent:reusingView:

if (component == 0)
        {
            for (int j =20; j<=200; j++)
            {
            NSString* myString           = [NSString stringWithFormat:@"%d",j];
            [myArray addObject:myString];
            }
            UILabel *weightLabel0        = [[UILabel alloc] initWithFrame:CGRectMake(40, 0, 100, 32)];
            Label0.text            = [myArray objectAtIndex:row];
            Label0.textAlignment   = UITextAlignmentLeft;
            Label0.backgroundColor = [UIColor clearColor];
            [rowView insertSubview:weightLabel0 atIndex:1];
return rowView;

        }

ここにメソッドがあります:

-(void) refreshPicker
{


    NSArray* mArray = [self.myTextField.text componentsSeparatedByString:@"."];
    NSNumber* str1 = [mArray objectAtIndex:0];
    int selectRow1 = [str1 intValue]-20;
    NSNumber* str2 = [mArray objectAtIndex:1];
    int selectRow = [str2 intValue];

    if (selectRow == 0) {
        int selectRow2 = 0;
        [self.pickerView selectRow:selectRow2 inComponent:1 animated:NO];
    }
    else if (selectRow == 5) {
        int selectRow2 = 1;
        [self.pickerView selectRow:selectRow2 inComponent:1 animated:NO];
    }

    [self.pickerView  selectRow:selectRow1 inComponent:0 animated:NO];

    [pickerView_ reloadAllComponents];


}

これをどのようにまとめればよいですか?たとえば、viewDidLoad でこのメソッドを呼び出しても、何も起こりません。助けてください=)

4

1 に答える 1

1

私はアイデアを思いつきました。私のピッカーは、テキストフィールドが呼び出されたときにのみアイテムを作成するため、つまりファーストレスポンダーになるため、textFieldDidBeginEditing 内で refreshPicker メソッドを呼び出します。テキストフィールドデリゲートを自分自身に設定することを忘れないでください。=) 私の問題に遭遇した人たち、乾杯。

于 2012-09-05T03:55:38.440 に答える