2016-07-16 2 views
0

So ive bekam meine UI-Picker, aber es zeigt die gleichen Daten für jede der UI-Picker, aber ich möchte es das Schnurrbart-Array in einem ui Picker und die Farbe in der anderen anzeigen. Derzeit im Bild gezeigt, weist es jedem Array die gleichen Daten zu.Zwei UI-Picker in demselben View-Controller Objective C?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _colourSourceArray = [[NSArray alloc] initWithObjects:@"No Frame",@"Red", @"Green", @"Blue", @"Black",@"Yellow", nil ]; 
    _MustacheArray = [[NSArray alloc]initWithObjects:@"None",@"Pencil",@"The Professor",@"The Regent",@"Hipster",@"Super Mario", nil]; 

    [_picker selectRow:0 inComponent:0 animated:YES]; 
    [_notcolourpicker selectRow:1 inComponent:0 animated:YES]; 

    _picker.tag=0; 
    _notcolourpicker.tag=1; 
} 

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    switch (component) { 
     case 0: 
      return _colourSourceArray.count; 
      break; 
     case 1: 
      return _MustacheArray.count; 
     default: 
      break; 
    } 

    return 0; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    switch (component) { 
     case 0: 
      return [_colourSourceArray objectAtIndex:row]; 
      break; 
     case 1: 
      return [_MustacheArray objectAtIndex:row]; 
     default: 
      break; 
    } 

    return 0; 
} 

-(IBAction)returnToExportSettingsVC:(UIStoryboardSegue *)segue 
{ 
    // Nothing needed here. 
} 

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    if (component == 0) { 
     NSLog(@"First"); 

     NSString *s = _colourSourceArray[row]; 

     _selectedcolour = s; 
     NSLog(_selectedcolour); 
    } 
    else 
     if(component == 1){ 
      NSLog(@"Second"); 
      NSString *d = _MustacheArray[row]; 

      _selectedmustache=d; 

      NSLog(_selectedmustache); 
     } 

    /// Used if you wist to assign the selected row to a label to show a users selection. 
    //_label.text= [_MustacheArray objectAtIndex:[mostachepicker selectedRowInComponent:1]]; 
} 

enter image description here

+1

Fügen Sie der Pickeransicht in Ihrem Storyboard einfach ein 'Tag' hinzu und überprüfen Sie dann beim Zurückgeben der Daten aus der Datenquelle, welcher Picker die Daten anfordert, indem Sie' if picker.tag == 1 {...} else if picker.tag == 2 {...} ' – sbarow

Antwort

3

Das Problem ist, dass beide Kommissionierer Ansichten in die gleichen Datenquelle/Delegatmethoden anrufen. Wenn Sie Ihren Code auf diese Weise strukturieren, müssen Sie den Parameter pickerView untersuchen, um zu sehen, Picker anzeigen, das ist, und schalten Sie das ein.