Подтвердить что ты не робот

Несколько PickerViews в одном представлении?

Я хочу создать 2 отдельных сборщика в одном представлении, используя тот же viewController. Но как установить для них отдельные делегаты и источник данных?

Кажется, он не работает. Они появляются с теми же данными. Если у вас есть какой-либо пример кода, это будет очень полезно.

Спасибо.

4b9b3361

Ответ 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
     }
}