1

現在、コーディングに問題があります。各ピッカーに異なるデータを持つ 1 つのビューに 2 つのピッカービューを配置したいと考えています。したがって、テキストフィールドをクリックするとピッカーにデータが表示され、別のテキストフィールドをクリックするとピッカーに別のデータが表示されます。ピッカーを作成できましたが、各テキストフィールドに同じデータが表示されます。ピッカーのデータを分離するアクションを作成しようとしましたが、それを機能させることができません。

- (void)viewDidLoad{   
    dataArray = [[NSMutableArray alloc] init];
    [dataArray addObject:@" "];
    [dataArray addObject:@"IG"];
    [dataArray addObject:@"G"];
    [dataArray addObject:@"VG"];
    [dataArray addObject:@"MVG"]; 
}

   - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)picker;{
        return 1;
    }

    - (void)pickerView:(UIPickerView *)picker didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
        currentTextField.text = [dataArray objectAtIndex:row];
        selectedText = currentTextField.text;        
    }

    - (NSInteger)pickerView:(UIPickerView *)picker numberOfRowsInComponent:(NSInteger)component;{
        return [dataArray count];
    }

    - (NSString *)pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component;{
        return [dataArray objectAtIndex:row];
}

これは私がピッカーに使用しているコードであり、他のテキストフィールドの正確なコピーを試みましたが、データは異なります。

このコードを含むテキストフィールドのアクションは次のとおりです。

- (IBAction)showPicker:(id)sender {

    picker = [[UIPickerView alloc] init];
    picker.showsSelectionIndicator = YES;
    picker.dataSource = self;
    picker.delegate = self;

    UIToolbar* toolbar = [[UIToolbar alloc] init];
    toolbar.barStyle = UIBarStyleBlackTranslucent;
    [toolbar sizeToFit];

    //to make the done button aligned to the right
    UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];


    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                   style:UIBarButtonItemStyleDone target:self
                                                                  action:@selector(doneClicked:)];


    [toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];

    //custom input view
    textField3.inputView = picker;
    textField3.inputAccessoryView = toolbar;
    textField5.inputView = picker;
    textField5.inputAccessoryView = toolbar; 
    textField7.inputView = picker;
    textField7.inputAccessoryView = toolbar; 
    textField9.inputView = picker;
    textField9.inputAccessoryView = toolbar;

ピッカーから他のテキストフィールドに他のデータを接続するにはどうすればよいですか?

4

1 に答える 1

1
  1. ピッカー ビューごとに 1 つずつ、2 つの配列を作成します。これらの配列内に、ユーザーが選択できるオプションを含めます。これは、NSArray を使用して簡単に実現できます。

  2. Interface Builder (つまり、Storyboard ファイル) でテキスト フィールドを設定し、各テキスト フィールドの IBAction をビュー コントローラーのコード内の関数に接続します。

  3. これらの各関数内で、現在のピッカーに対応する配列の内容で新しい UIPickerView をインスタンス化します。

  4. ユーザーがアイテムを選択した後、ピッカーによって選択されたインデックス内に含まれる配列値にテキストフィールドのコンテンツを設定します。

  5. 現在のビューからピッカーを削除します。

于 2012-07-23T10:43:49.103 に答える