首页 > 学院 > 开发设计 > 正文

UIpickerView的使用

2019-11-09 17:36:44
字体:
来源:转载
供稿:网友

UipickerView类似于UItableView,使用方法非常相似; 自定义MJPickerView,继承自UIpickerView;遵守两个协议:UIPickerDataSource和UIPickerDelegate;设置数据源和代理;

1、两个数据源方法

1、此方法返回的是列数 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 2;} 2、此方法返回的是每一列的行数 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{if (component == 0) { return _listOne.count;} return _listTwo.count; }

2、代理方法:

1、设置每列宽度 - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {if (self.listTwo) { if (component == 1) { return [UIScreen mainScreen].bounds.size.width - 120; } return 120;}return [UIScreen mainScreen].bounds.size.width;}2、设置每一列的每一行的显示数据,如果不实现这个代理方法,效果如下图所示:-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{if (component == 0) { return [_listOne objectAtIndex:row];} else { return [_listTwo objectAtIndex:row]; }} 3、获取选中的行列,得到数组中的数据- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{if (component == 0) { _selectedStrFromOneList = [_listOne objectAtIndex:row];} else { _selectedStrFromTwoList = [_listTwo objectAtIndex:row];}}

没有实现titileForRow这个代理方法的效果:

没有实现titileForRow这个代理方法的效果

3、设置为UITextField的inputView

self.cellTextFld.inputView = self.pickerV;

4、自定义toolBar,设置为UITextField的inputaccessoryView

UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleDone target:self action:@selector(resignFirResponder)]; //占位用 UIBarButtonItem *selectItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"确定" style:UIBarButtonItemStyleDone target:self action:@selector(complete)];UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; [toolBar setItems:@[cancelItem,selectItem,doneItem]]; self.cellTextFld.inputAccessoryView = toolBar;

剩下的数据传递了,就非常简单了;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表