iOS开发日记48-详解UIPickerView
2015-11-26 11:39
309 查看
今天博主有一个UIPickerView的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.
UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.
UIPickerView直接继承了UIView,没有继承UIControl,因此,它不能像UIControl那样绑定事件处理方法,UIPickerView的事件处理由其委托对象完成.
self.viewOfPick=[[UIPickerView alloc]initWithFrame:CGRectMake(100, 0, 200, [UIScreen mainScreen].bounds.size.height)];
_viewOfPick.dataSource=self;
_viewOfPick.delegate=self;
//pickerView默认选中row为0,无线滚动只是在一开始的时候显示row的中间值,造成无线滚动的假象
[_viewOfPick selectRow:9 inComponent:0 animated:YES];
//设置pickerView默认选中最后一行
[_viewOfPick selectRow:9 inComponent:1 animated:YES];
[self.view addSubview:_viewOfPick];
//类似tableView的cell for row,根据row和component返回字符串显示
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component __TVOS_PROHIBITED
{
return @"空";
}
//类似tableView的didSelect,根据row和component进行具体的传值等操作
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component __TVOS_PROHIBITED
{
NSLog(@"*********%ld,%ld",(long)component,row);
}
//类似tableView的cell for row,根据row和component返回自定义视图显示
//注意,同时实现返回NSString 和下面这个 返回UIView的方法,只执行返回UIView的方法
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view __TVOS_PROHIBITED
{
UIView *blackView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 10, 10)];
blackView.backgroundColor=[UIColor blackColor];
return blackView;
}
//返回pickerView的行高
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component __TVOS_PROHIBITED
{
return 40;
}
// returns the number of 'columns' to display.component的数量
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
// returns the # of rows in each component..row的数量
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return 10;
}
UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.
UIPickerView直接继承了UIView,没有继承UIControl,因此,它不能像UIControl那样绑定事件处理方法,UIPickerView的事件处理由其委托对象完成.
self.viewOfPick=[[UIPickerView alloc]initWithFrame:CGRectMake(100, 0, 200, [UIScreen mainScreen].bounds.size.height)];
_viewOfPick.dataSource=self;
_viewOfPick.delegate=self;
//pickerView默认选中row为0,无线滚动只是在一开始的时候显示row的中间值,造成无线滚动的假象
[_viewOfPick selectRow:9 inComponent:0 animated:YES];
//设置pickerView默认选中最后一行
[_viewOfPick selectRow:9 inComponent:1 animated:YES];
[self.view addSubview:_viewOfPick];
//类似tableView的cell for row,根据row和component返回字符串显示
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component __TVOS_PROHIBITED
{
return @"空";
}
//类似tableView的didSelect,根据row和component进行具体的传值等操作
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component __TVOS_PROHIBITED
{
NSLog(@"*********%ld,%ld",(long)component,row);
}
//类似tableView的cell for row,根据row和component返回自定义视图显示
//注意,同时实现返回NSString 和下面这个 返回UIView的方法,只执行返回UIView的方法
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view __TVOS_PROHIBITED
{
UIView *blackView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 10, 10)];
blackView.backgroundColor=[UIColor blackColor];
return blackView;
}
//返回pickerView的行高
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component __TVOS_PROHIBITED
{
return 40;
}
// returns the number of 'columns' to display.component的数量
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
// returns the # of rows in each component..row的数量
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return 10;
}
相关文章推荐
- Apue Chapter 7 习题答案
- 自定义UINavigationController 切换动画
- 进击的KFC:UI(六)UISegmentControl,UISlider,NSTimer,UIImageView
- 根据Excel单元格坐标修改单元格内的Value
- <merge/>标签在UI界面中的优化作用
- easyUI 验证控件应用、自定义、扩展验证 手机号码或电话话码格式
- easyui 表单自定义验证 正则表达式验证
- JAVA生成短8位UUID
- UIImageView 序列帧动画及内存优化详解
- 怎么让tableview的section的headerView随着cell一起滑动
- EsayUI + MVC + ADO.NET(工作单元)
- EsayUI + MVC + ADO.NET(仓储基础接口)
- ueditor在使用requirejs时,报ZeroClipboard undefined错误
- 55 Which statement about recovering from the loss of a redo log group is true? A. If the lost redo l
- 53 Which statement about using RMAN stored scripts is true? A. To create and execute an RMA
- NGUI OnDrag 中的Delta
- UE 查找字符串显示列表
- 遇到:Invalid layout of java.lang.String at value 这样的问题,
- UIView的layoutSubviews和drawRect方法何时调用
- android.useDeprecatedNdk=true 添入工程根目录下的新建 gradle.properties 文件