Очень простой вопрос iPhone. Как сделать UIPickerView с двумя столбцами? - PullRequest
1 голос
/ 24 июня 2009

Я читал другие вопросы о создании UIPickerView с двумя или более столбцами, но не могу найти точное решение.

Как это делается для iPhone программно? Как вы добавляете статические данные? Спасибо!

Ответы [ 3 ]

12 голосов
/ 24 июня 2009

Сделайте так, чтобы ваш контроллер (или все, что контролирует поведение PickerView) поддерживало протокол UIPickerViewDelegate. Затем реализовать:

- (int) numberOfColumnsInPickerView:(UIPickerView*)picker

, чтобы вернуть желаемое количество столбцов, и

- (int) pickerView:(UIPickerView*)picker numberOfRowsInColumn:(int)col

, чтобы вернуть количество строк для каждого столбца, и, наконец,

- (UIPickerTableCell*) pickerView:(UIPickerView*)picker tableCellForRow:(int)row inColumn:(int)col

для настройки каждой ячейки.

См. Ссылку для UIPickerView и UIPickerViewDelegate .

2 голосов
/ 04 мая 2013

На эту тему есть отличный учебник здесь .

0 голосов
/ 22 октября 2013

Предполагается, что у вас есть словарь или пара массивов, содержащих ваши статические данные. Для простоты я пойду с очень простым массивом.

Вы должны изменить определение интерфейса ваших контроллеров представления, чтобы сообщить программе, что ваш контроллер представления может предоставить данные и делегирование представлению выбора.

@interface NVHomeViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>

То, что простая реализация нескольких методов заставит его работать, однако следует проверить документацию на наличие других методов, которые являются необязательными, но обеспечивают больше настроек и контроля.

@interface NVHomeViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>

NSArray *options;
- (void)viewDidLoad
{
    [super viewDidLoad];
    options = @[@"a",@"b",@"c",@"d"];
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return [options count];
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return [options objectAtIndex:row];
}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    NSLog(@"%@ selected.",[options objectAtIndex:row]);
}
...