0

選択したデータの 2 つの列がある uipicker アプリを使用しています。このコードを使用すると、ピッカーから値を選択できます (1 行しかない場合)。

- (void)viewDidLoad
{
    [super viewDidLoad];
_pickerData = @[@"item1", @"item2", @"Item 4", @"Item 5", @"Item 6"];
    self.picker.dataSource = self;
    self.picker.delegate = self;

}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{

}


// The number of columns of data
- (int)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
     return 1;
  //  return 2;
}

// The number of rows of data
- (int)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return _pickerData.count;

}

- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
   return _pickerData[row];
  //    return _pickerData[row][component];
}


- (IBAction)selOptions:(id)sender {
    NSInteger row = [self.picker selectedRowInComponent:0];
    NSString *selected = [_pickerData objectAtIndex:row];

    NSLog(selected);

}
@end

このコードを使用すると、ボタンをクリックすると、選択されたものの値が得られ、セグエまたは好きなものをプッシュすることができます。

しかし、mypickerに2行を持たせたいのですが、以下に投稿したコードでは...ボタンをクリックしてもエラーが発生しません。

- (void)viewDidLoad
{
    [super viewDidLoad];

     _pickerData = @[ @[@"item1", @"A"],
                     @[@"item2", @"B"],
                     @[@"item3", @"C"],
                     @[@"item4", @"D"],
                     @[@"item5",@"E"],
                     @[@"item6",@"F"]
                     ];

    // Connect data
    self.picker.dataSource = self;
    self.picker.delegate = self;

}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{

}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

// The number of columns of data
- (int)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
   //  return 1;
     return 2;
}

// The number of rows of data
- (int)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return _pickerData.count;

}

// The data to return for the row and component (column) that's being passed in
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{

     return _pickerData[row][component];
}


- (IBAction)selOptions:(id)sender {
    NSInteger row = [self.picker selectedRowInComponent:0];
    NSString *selected = [_pickerData objectAtIndex:row];

    NSLog(selected);

NSInteger row2=[self.picker selectedRowInComponent:1];
NSString *selectedb=[_pickerData objectAtIndex:row2];

NSLog(selectedb);

}
@end

データは正常に表示されますが、ボタンをクリックしたときに両方の行の値を選択できるようにする方法がわかりません。これに関する助けをいただければ幸いです。

ありがとうございました

4

0 に答える 0