原文地址:http://www.tuicool.com/articles/7NryUn
UIPickerView是iOS常用的控件之一,它通过轮转界面提供一系列多值选项,它向用户展示信息,也能收集用户输入。下面是一个普通的UIPickerView控件。
1、代理函数介绍
使用UIPickerView控件需要遵守两种协议:UIPickerViewDelegate和UIPickerViewDataSource 。
UIPickerViewDelegate 协议的方法有:
1). -(NSString *) pickerView: (UIPickerView * )pickerView
titleForRow: (NSInteger) row
forComponent: (NSInterger) component
该方法根据指定的行号返回该行的标题。
2). -(void) pickerView: (UIPickerView *)pickerView
didSelectRow: (NSInteger)row
inComponent: (NSInteger)component
当用户选择某个row时,picker view调用此函数
3). - (CGFloat) pickerView:(UIPickerView *)pickerView
rowHeightForComponent: (NSInteger) component
由picker view调用,当其在绘制row内容,需要row的高度时调用
4). - (CGFloat)pickerView: (UIPickerView *)pickerView
widthForComponent:(NSInteger) component
当picker view 需要row的宽度时,调用此函数
5). - (UIView *)pickerView: (UIPickerView *)pickerView
viewForRow:(NSInteger) row
forComponent:(NSInteger) component
reusingView:(UIView *) view
当picker view需要给指定的component.row指定view时,调用此函数.返回值为用作row内容的view
UIPickerViewDataSource 协议的方法有:
1). -(NSInteger) numberOfComponentslnPickerView: (UIPickerView *) pickerView
该方法返回UIPickerView需要多少个组件(有多少列)。
2). -(NSInteger) pickerView: (UIPickerView *) pickerView
numberOfRowsInComponet: (NSInteger) component
该方法返回指定组件包含多少行。
2、常用方法:
1. - (NSInteger) numberOfRowsInComponent:(NSInteger)component
返回指定的component中行数
2. -(void) reloadAllComponents
重新载入所有新数据
3. -(void) reloadComponent: (NSInteger) component
重新载入指定列的数据
4. -(CGSize) rowSizeForComponent: (NSInteger) component
返回值为给定列的行大小, 通过调用委托方法中的pickerView:widthForComponent:和pickerView:rowHeightForComponent:获得返回值
5. -(NSInteger) selectedRowInComponent: (NSInteger) component
返回指定列被选中行的序号,若无row被选中,则返回-1
6. -(void) selectRow: (NSInteger)row
inComponent: (NSInteger)component
animated: (BOOL)animated
在代码指定要选择的某component的某row,参数animated 若为YES,转动到你选择的新值;若为NO,直接显示你选择的值
7. -(UIView *) viewForRow: (NSInteger)row
forComponent: (NSInteger)component
返回由委托方法pickerView:viewForRow:forComponentreusingView:指定的view.如果委托方法未实现,或者说这个view并不是可见的,则返回nil