WEB开发网
开发学院手机开发iPhone 开发 iPhone应用开发-UIPickerView选取器详解 阅读

iPhone应用开发-UIPickerView选取器详解

 2012-09-07 12:22:08 来源:WEB开发网   
核心提示: 选取器被用来取代PC上面的下拉菜单,它是一个大大的滚轮,iPhone应用开发-UIPickerView选取器详解,它占用固定的大小 320×216.一、创建大小虽然固定,但是位置可以任意(不过横向被充满,这次,我们先把要用到的代码写好,咱也只能改变纵向位置),与UITableView 类似

 选取器被用来取代PC上面的下拉菜单,它是一个大大的滚轮,它占用固定的大小 320×216.

一、创建
大小虽然固定,但是位置可以任意(不过横向被充满,咱也只能改变纵向位置)。与UITableView 类似,UIPickerView 类也需要一个数据源。与表格视图不同的是,选取器不使用索引路径,而是用一个NSinteger 值来标识每一行。选取器可以有多个表盘,每个都可以,作为一个组件引用。
选取器视图使用代理作为数据源,因此数据源可以存在于另一个类或者视图控制器中。
   _pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(10, 100, 0, 0)]; 
    _pickerView.showsSelectionIndicator = YES;//在当前选择上显示一个透明窗口
   _pickerView.delegate = self;
   _pickerView.dataSource = self;

二、实现UIPickerViewDelegate和UIPickerViewDataSource

 
//返回每个组件上的行数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
//返回组件数
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
//每一列中每一行的具体内容
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
//返回组件的高度,如果这个方法未实现,选取器会自动调整到合适的高度
-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
//选中哪一列哪一行
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

三、读取选取器

使用视图的selectedRowInComponent 方法,是获得选取器视图被选中列的索引的最直接的方法:
int selectedRow = [_pickerView selectedRowInComponent:0];

下面看个例子:

这次要用UIPickerView控件做出这样的效果:它有两个转盘(Component),当左边的转盘改变了选择值,右边转盘所有的选项都改变。如下图所示:
 
为了达到这样的效果,还是先要创建两个NSArray对象,每个转盘对应一个。然后创建一个NSDictionary对象。我们可以想象出数据是树形的,NSDictionary可以看成是一个有两列的表格,第一列存储的是关键字,每个关键字对应一个NSArray对象,这些NSArray数组中存储的是一系列的NSString对象。
在这个例子中,第一例存储的是一些省份,第二列存储的是省份对应的地级市。
其实实现的方法跟上篇文章中的差不多,唯一不同的是要实现:改变左边转盘的选项,右边转盘内容发生相应的变化。这个功能要用到的函数我们上次也使用到了。
这次,我们先把要用到的代码写好,然后再用Interface Builder创建控件、实现映射等。

1 2 3  下一页

Tags:iPhone 应用开发 UIPickerView

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接