多个UIPickers IOS

时间:2015-09-04 14:03:16

标签: ios objective-c uipickerview

大家好,感谢您阅读此问题。所以我一直坚持这个问题一段时间,需要一些帮助。我试图在IOS中实施多个选择器,但它们没有按计划出现。我成功完成了一个选择器,但试图在同一视图中添加另一个,我遇到了问题。 Image of problem in storyboard.

所以起初我认为这行代码是个问题。但是当使用返回1:它只会返回相同的ui选择器两次。返回2返回与上面相同的问题,但有两行。

-(NSInteger)numberOfComponentsInPickerView: (UIPickerView *)pickerView {

/*

return 1;

*/

if(pickerView == _picker) {
    return _colourSourceArray.count;
} else if(_picker == _mustachepicker) {
    return _mustacheArray.count;
}

}

我的两个数据源都链接到同一个视图,这会导致问题吗?

我的.h看起来像什么:

////// Frame Colour Picker
@property (strong, nonatomic)NSArray *colourSourceArray;
@property (strong, nonatomic)NSString *selectedcolour;
@property (weak, nonatomic) IBOutlet UIPickerView *picker;
////// Mustahce Picker
@property (weak, nonatomic) IBOutlet UIPickerView *mustachepicker;
@property (weak, nonatomic) NSArray *mustacheArray;
@property (weak,nonatomic) NSString *selectedMostache;
/////////////////////////

我的.m方法:

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
NSInteger comp = 0;
if(_picker == _mustachepicker){
    comp= _mustacheArray.count;
} else if(pickerView == _picker) {
    comp= _colourSourceArray.count;
}
return comp;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSString *title;
if(_picker == _mustachepicker){
    title= _mustacheArray[row];
} else if(pickerView == _picker){
    title = _colourSourceArray[row];
}
return title;
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row    inComponent:(NSInteger)component {
if(_picker == _mustachepicker){
    NSString *mustacheString= _mustacheArray[row];
    NSLog(mustacheString);
    _selectedMostache=mustacheString;
} else if(pickerView == _picker){
    NSString *resultString = _colourSourceArray[row];
    _selectedcolour= resultString;
    NSLog(resultString);
}
NSLog(_selectedcolour);
NSLog(_selectedMostache);
}

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

由于您创建了两个不同的选择器,那么为什么要将tag设置为选择器,只需比较那里的DataSource和Delegate方法中的UIPicker

-(NSInteger)numberOfComponentsInPickerView: (UIPickerView *)pickerView {
    if(pickerView == _picker) {
         return _colourSourceArray.count;
    } else if(_picker == _mustachepicker) {
         return _mostacheArray.count;
    }
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    NSInteger comp = 0;
    if(_picker == _mustachepicker){
         comp= _mostacheArray.count;
    } else if(pickerView == _picker) {
         comp= _colourSourceArray.count;
    }
    return comp;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow(NSInteger)row forComponent:(NSInteger)component {
    NSString *title;
    if(_picker == _mustachepicker){
         title= _mostacheArray[row];
    } else if(pickerView == _picker){
         title = _colourSourceArray[row];
    }
    return title;
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
   if(_picker == _mustachepicker){
         NSString *mostacheString= _mostacheArray[row];
         NSLog(mostacheString);
        _selectedMostache=mostacheString;
   } else if(pickerView == _picker){
         NSString *resultString = _colourSourceArray[row];
         _selectedcolour= resultString;
         NSLog(resultString);
   }
   NSLog(_selectedcolour);
   NSLog(_selectedMostache);
}