非常简单的iPhone问题。如何用两列制作UIPickerView?

时间:2009-06-24 18:30:33

标签: iphone uipickerview

我已经阅读了有关使用两列或更多列创建UIPickerView但无法找到确切解决方案的其他问题。

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

3 个答案:

答案 0 :(得分: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的参考资料。

答案 1 :(得分:2)

有关此主题的优秀教程here

答案 2 :(得分: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]);
}