前言

	NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIPickerView : UIView <NSCoding, UITableViewDataSource>
@available(iOS 2.0, *) public class UIPickerView : UIView, NSCoding, UITableViewDataSource
  • 选择框可以让用户以滑动的方式选择值。

1、UIPickerView 的创建

  • 遵守协议 UIPickerViewDataSource, UIPickerViewDelegate

  • Objective-C

    	// 实例化 UIPickerView 对象
    UIPickerView *pickerView = [[UIPickerView alloc] init]; // 设置代理
    pickerView.dataSource = self;
    pickerView.delegate = self; // 将 pickerView 添加到屏幕
    [self.view addSubview:pickerView]; // 设置列数,必须设置,UIPickerViewDataSource 协议方法
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 3;
    } // 设置行数 ,必须设置,UIPickerViewDataSource 协议方法
    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return 10;
    } // 设置各行内容,必须设置,UIPickerViewDelegate 方法
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [NSString stringWithFormat:@"%li行 - %li列", row, component];
    }
  • Swift

    	// 实例化 UIPickerView 对象
    let pickerView:UIPickerView = UIPickerView() // 设置代理
    pickerView.dataSource = self
    pickerView.delegate = self // 将 pickerView 添加到屏幕
    self.view.addSubview(pickerView) // 设置列数,必须设置,UIPickerViewDataSource 协议方法
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 3
    } // 设置行数,必须设置,UIPickerViewDataSource 协议方法
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return 10
    } // 设置各行内容,必须设置,UIPickerViewDelegate 方法
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return String(format: "%li行 - %li列", row, component)
    }

2、UIPickerView 的设置

  • Objective-C

    	// 设置默认值
    [pickerView selectRow:1 inComponent:0 animated:YES]; // 第 0 列的默认值为 1
    [pickerView selectRow:2 inComponent:1 animated:YES]; // 第 1 列的默认值为 2
    [pickerView selectRow:3 inComponent:2 animated:YES]; // 第 2 列的默认值为 3 // 设置 frame
    /*
    高度只有三个值:162, 180 和 216,默认为 216,设置为其它的值无效
    */
    pickerView.frame = CGRectMake(10, 30, self.view.bounds.size.width - 20, 162); // 设置位置
    pickerView.center = self.view.center; // 设置背景颜色
    pickerView.backgroundColor = [UIColor orangeColor]; // 是否显示指示器
    /*
    default is NO
    */
    pickerView.showsSelectionIndicator = YES; // 刷新指定的列
    [pickerView reloadComponent:0]; // 刷新所有的列
    [pickerView reloadAllComponents]; // 获取列数,只读
    NSInteger numberOfComponents = pickerView.numberOfComponents; // 获取指定列的行数
    NSInteger numberOfRows = [pickerView numberOfRowsInComponent:0]; // 获取指定行的尺寸
    CGSize rowSize = [pickerView rowSizeForComponent:0]; // 获取指定列被选中的行数索引
    NSInteger selectedIndex = [pickerView selectedRowInComponent:0]; // 获取指定行列的视图
    UIView *view = [pickerView viewForRow:3 forComponent:0]; // 设置列宽
    /*
    不设置时为默认宽度,UIPickerViewDelegate 方法
    */
    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { return 50;
    } // 设置行高
    /*
    不设置时为默认高度 32,UIPickerViewDelegate 方法
    */
    - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { return 50;
    }
  • Swift

    	// 设置默认值
    pickerView.selectRow(1, inComponent: 0, animated: true) // 第 0 列的默认值为 1
    pickerView.selectRow(2, inComponent: 1, animated: true) // 第 1 列的默认值为 2
    pickerView.selectRow(3, inComponent: 2, animated: true) // 第 2 列的默认值为 3 // 设置 frame
    /*
    高度只有三个值:162, 180 和 216,默认为 216,设置为其它的值无效
    */
    pickerView.frame = CGRectMake(10, 30, self.view.bounds.size.width - 20, 162) // 设置位置
    pickerView.center = self.view.center // 设置背景颜色
    pickerView.backgroundColor = UIColor.orangeColor() // 是否显示指示器
    /*
    default is NO
    */
    pickerView.showsSelectionIndicator = true // 刷新指定的列
    pickerView.reloadComponent(0) // 刷新所有的列
    pickerView.reloadAllComponents() // 获取列数,只读
    let numberOfComponents:Int = pickerView.numberOfComponents // 获取指定列的行数
    let numberOfRows:Int = pickerView.numberOfRowsInComponent(0) // 获取指定行的尺寸
    let rowSize:CGSize = pickerView.rowSizeForComponent(0) // 获取指定列被选中的行数索引
    let selectedIndex:Int = pickerView.selectedRowInComponent(0) // 获取指定行列的视图
    let view:UIView? = pickerView.viewForRow(3, forComponent: 0) // 设置列宽
    /*
    不设置时为默认宽度,UIPickerViewDelegate 方法
    */
    func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { return 50
    } // 设置行高
    /*
    不设置时为默认高度 32,UIPickerViewDelegate 方法
    */
    func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 50
    }

3、UIPickerViewDataSource 协议方法

  • Objective-C

    	// 设置列数
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { } // 设置行数
    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { }
  • Swift

    	// 设置列数
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { } // 设置行数
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { }

4、UIPickerViewDelegate 协议方法

  • Objective-C

    	// 设置各行内容为 字符串
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { } // 设置各行内容为 NSAttributedString 型字符串
    - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component { } // 设置各行内容为 view
    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { } // 设置列宽
    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { } // 设置行高
    - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { } // 检测行的选择状态,在滑动停止后触发
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { }
  • Swift

    	// 设置各行内容为 字符串
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { } // 设置各行内容为 NSAttributedString 型字符串
    func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { } // 设置各行内容为 view
    func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView { } // 设置列宽
    func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { } // 设置行高
    func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { } // 检测行的选择状态,在滑动停止后触发
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { }

iOS - UIPickerView的更多相关文章

  1. iOS UIPickerView 显示全国省市

    效果图 #import "ViewController.h" @interface ViewController () @property(strong,nonatomic)UIP ...

  2. ios UIPickerView 技巧集锦(包括循环滚动)

    摘自: http://blog.csdn.net/ipromiseu/article/details/7436521 http://www.cnblogs.com/dabaopku/archive/2 ...

  3. iOS:UIPickerView选择器的使用

    通过UIPickerView选择器做的一个类似于密码锁的日期时间表 源码如下: #import <UIKit/UIKit.h> @interface ViewController : UI ...

  4. iOS学习——UIPickerView的实现年月选择器

    最近项目上需要用到一个选择器,选择器中的内容只有年和月,而在iOS系统自带的日期选择器UIDatePicker中却只有四个选项如下,分别是时间(时分秒).日期(年月日).日期+时间(年月日时分)以及倒 ...

  5. iOS学习之自定义弹出UIPickerView或UIDatePicker(动画效果)

    前面iOS学习之UIPickerView控件的简单使用 用到的UIPickerView弹出来是通过 textField.inputView = selectPicker;   textField.in ...

  6. iOS学习之UIPickerView控件的关联选择

    接上篇iOS学习之UIPickerView控件的简单使用 接着上篇的代码 http://download.csdn.net/detail/totogo2010/4391870 ,我们要实现的效果如下: ...

  7. iOS中UIPickerView常见属性和方法的总结

    UIPickerView是iOS中的原生选择器控件,使用方便,用法简单,效果漂亮. @property(nonatomic,assign) id<UIPickerViewDataSource&g ...

  8. [ios]新手笔记-。-UIPickerView 关于伪造循环效果和延时滚动效果

    查找了网上资料,循环效果绝大部分都是增加行数来制造循环的错觉,延时滚动就是利用NSTimer间隔出发滚动事件来制造滚动效果. 代码: #import <UIKit/UIKit.h>#imp ...

  9. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

随机推荐

  1. Shell之while循环

    While循环的格式: while expression do command command ... done 1.计数器控制的while循环:主要用于已经准确知道要输入的数据和字符串的数目. 例子 ...

  2. Mysql query log

    一.查询日志的概念: 查询日志记录MySQL中所有的query,通过"--log[=file_name]"来打开该功能.由于记录了所有的query,包括所有的select,体积比较 ...

  3. js实现通用的微信分享组件示例

    一.可定义的信息 1.分享时显示的LOGO:2.分享LOGO的宽度:3.分享LOGO的高度:4.分享出去显示的标题(默认调用网页标题):5.分享出去显示的描述(默认调用网页标题):6.分享链接(默认为 ...

  4. set_include_path — 设置 include_path 配置选项为当前脚本设置 include_path 运行时的配置选项。

    说明 string set_include_path ( string $new_include_path ) 为当前脚本设置 include_path 运行时的配置选项. 参数 new_includ ...

  5. asp.net导入Excel表

    一.导入Excel的界面这个界面很简单,代码就不列出来了.二.导入的代码我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里.这里需要注意的是 ...

  6. [工具][windows][visualStudio][充电]番茄助手vaassist常见用法

    参考:http://blog.csdn.net/hotdog156351/article/details/43955565 1 安装好VAS打开VS2010之后,首先关闭VA outline与VA V ...

  7. Unity Adam特性整理

    1.Wind 小工具,一个绘制箭头Gizmos的脚本 2.TubeLight柱形光照 蛮NB的技术,实现动态柱状光照,但相机必须挂上PostProcessing 默认场景拖出来之后是这样的,然后给相机 ...

  8. github for windows回滚到某一个版本,

    建议先学会使用git命令再学GUI版的git,git本来就是命令行程序,GUI本质就是执行一些命令.仅从一些icon和单词去理解一些操作难免会有偏差.而反过来,熟悉命令会更好地理解GUI操作.想要回滚 ...

  9. MySQL日期时间函数大全

    DAYOFWEEK(date) 返回日期date是星期几(=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03'); WEEKDAY(date) 返回 ...

  10. lua中奇葩用法

    th> a=torch.zeros(,) [.0001s] th> a [torch.DoubleTensor of size 1x5] [.0002s] th> a[] [torc ...