Несколько PickerViews в одном представлении? - PullRequest
21 голосов
/ 20 апреля 2009

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

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

Спасибо.

Ответы [ 2 ]

31 голосов
/ 20 апреля 2009

Обратите внимание, что каждый метод как источника данных, так и протокола делегата содержит параметр 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;
    }
}
15 голосов
/ 20 апреля 2009

Самый простой способ сделать это - использовать свойство tag в pickerView. Я обычно определяю их в заголовке для удобства чтения. Вы можете установить тег в Интерфейсном Разработчике или в коде.

#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
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...