Несколько PickerViews в одном представлении?
Я хочу создать 2 отдельных сборщика в одном представлении, используя тот же viewController.
Но как установить для них отдельные делегаты и источник данных?
Кажется, он не работает. Они появляются с теми же данными. Если у вас есть какой-либо пример кода, это будет очень полезно.
Спасибо.
Ответы
Ответ 1
Обратите внимание, что каждый метод как источника данных, так и протоколов делегатов содержит параметр UIPickerView *
, например:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
Вам нужно использовать его для различения двух ваших экземпляров следующим образом:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if([pickerView isEqual: pickerOne]){
// return the appropriate number of components, for instance
return 3;
}
if([pickerView isEqual: pickerTwo]){
// return the appropriate number of components, for instance
return 4;
}
}
Ответ 2
Самый простой способ сделать это - использовать свойство tag
для pickerView. Я обычно определяю их в заголовке для удобства чтения. Вы можете установить тег в Interface Builder или в коде.
#define kPickerOne 0
#define kPickerTwo 1
Затем в вашем файле реализации...
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if(pickerView.tag == kPickerOne)
{
// do something with picker one
}
else if(pickerView.tag == kPickerTwo)
{
// the other picker
}
}