Я читал другие вопросы о создании UIPickerView с двумя или более столбцами, но не могу найти точное решение.
Как это делается для iPhone программно? Как добавить статические данные? Спасибо!
Я читал другие вопросы о создании UIPickerView с двумя или более столбцами, но не могу найти точное решение.
Как это делается для iPhone программно? Как добавить статические данные? Спасибо!
Сделайте так, чтобы ваш контроллер (или что-то еще, управляющее поведением 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.
Предполагая, что у вас есть словарь или пара массивов, содержащих ваши статические данные. Для простоты я возьму очень простой массив.
Вы должны изменить определение интерфейса вашего контроллера представления, чтобы сообщить программе, что ваш контроллер представления может предоставлять данные и делегирование в представление выбора.
@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]);
}