1

我已阅读有关创建具有两列或更多列的 UIPickerView 的其他问题,但找不到确切的解决方案。

这是如何以编程方式为 iPhone 完成的?如何添加静态数据?谢谢!

4

3 回答 3

12

让你的控制器(或任何控制 PickerView 行为的东西)支持 UIPickerViewDelegate 协议。然后,实现:

- (int) numberOfColumnsInPickerView:(UIPickerView*)picker

返回您想要的列数,以及

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

返回每列的行数,最后:

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

设置每个单元格。

请参阅UIPickerViewUIPickerViewDelegate的参考。

于 2009-06-24T18:53:01.150 回答
2

这里有一个关于这个主题的优秀教程。

于 2013-05-04T15:44:07.123 回答
0

假设您有一个字典或几个数组来保存您的静态数据。为简单起见,我将使用一个非常简单的数组。

你必须修改你的视图控制器接口定义来告诉程序你的视图控制器可以提供数据和委托给选择器视图。

@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]);
}
于 2013-10-22T08:28:41.797 回答