详解iOS App中UIPickerView滚动选择栏的添加方法

2020-01-15 15:48:34于海丽

 

说一下两个协议实例方法

UIPickerViewDelegate中的实例方法

复制代码
// 当用户选择某个row时

 

- (void) pickerView: (UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:                               (NSInteger)component

// 当其在绘制row内容,需要row的高度时

(CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent: (NSInteger) component
// 返回指定component.row显示的文本

(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger) component
// 当picker view需要给指定的component.row指定view时,调用此函数.返回值为用作row内容的view

(UIView *)pickerView: (UIPickerView *)pickerView view ForRow:(NSInteger) row forComponent:(NSInteger) component reusingView:(UIView *) view
// row的宽度

(CGFloat)pickerView: (UIPickerView *)pickerView widthForComponent:(NSInteger) component


UIPickerViewDataSource中的实例方法

 

按照官方文档的说法,UIPickerViewDataSource这个协议仅有的功能就是提供picker view中component的个数和各个component中的row的个数,虽然名为datasource,但是它工作于MVC的C中

本协议仅有两个实例方法,均需要实现:

复制代码
// 返回列数

 

(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
// 返回每一列对应的行数

(NSInteger) pickerView:(UIPickerView *) pickerView numberOfRowsInComponent:(NSInteger) component


5.关于按钮响应事件,关于按钮的形成和添加响应事件不再提,前面都有,
复制代码
(void) buttonPressed:(id)sender  
{  
     NSInteger row =[pickerView selectedRowInComponent:0];  
     NSString *selected = [pickerData objectAtIndex:row];  
     NSString *message = [[NSString alloc] initWithFormat:@"你选择的是:%@",selected];