2016-07-16 3 views
0

Итак, у меня был мой сборщик UI, но он отображает одни и те же данные для каждого из сборщиков UI, но мне бы хотелось, чтобы он отображал массив усов в одном сборщике ui и цвет один в другом. В настоящее время на изображении он присваивает одинаковые данные каждому массиву.Два сборщика UI в одном контроллере представления Цель 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

Просто добавьте «тег» в представление выбора в своем раскадровке, а затем, возвращая данные из источника данных, проверьте, какой сборщик запрашивает данные, выполнив 'if picker.tag == 1 {...} else if picker.tag == 2 {...} ' – sbarow

ответ

3

Проблема заключается в том, что обе точке зрения Picker вызывает в те же методы источника данных/делегата. Если вы делаете так, чтобы структурировать свой код, вам нужно будет изучить параметр pickerView, чтобы увидеть , который имеет вид, и включите его.