大家好,感谢您阅读此问题。所以我一直坚持这个问题一段时间,需要一些帮助。我试图在IOS中实施多个选择器,但它们没有按计划出现。我成功完成了一个选择器,但试图在同一视图中添加另一个,我遇到了问题。
所以起初我认为这行代码是个问题。但是当使用返回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);
}
任何帮助将不胜感激:)
答案 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);
}