码迷,mamicode.com
首页 > 其他好文 > 详细

UIPickerView

时间:2015-09-29 16:55:14      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

有时候我们需呀输入的内容是联动的,比如省份与城市,书名与章节等,这时候我们可以使用UIPickerVIew来实现.

首先向设计界面中拖入一个pickerView并关联代码,同时设置dataSource和delegate代理.

注:不要忘了在.h文件中添加协议

@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
@property (nonatomic,retain)NSMutableArray *nameArray;
@property(nonatomic,retain)NSMutableArray *contentArray;

 

初始化数组,获得数据,此处采用本地数据

//初始化数组
    _nameArray =[[NSMutableArray alloc]initWithObjects:@"第一章",@"第二章",@"第三章",@"第四章",@"第五章",@"第六章", nil];
    _contentArray=[[NSMutableArray alloc]initWithCapacity:0];
    //给内容数组中添加小数组
    for (int i=0; i<_nameArray.count; i++)
    {
        NSMutableArray *array =[[NSMutableArray alloc]initWithCapacity:0];
        for (int j =0; j<i+5; j++)
        {
            NSString *str =[NSString stringWithFormat:@"第%d.第%d节",i+1,j+1];
            [array addObject:str];
        }
        //把存过值的小数组追加到大数组中去
        [_contentArray addObject:array];

 

UIPickerViewDataSource协议方法

//设置区数
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    //左区内容大小
    if (component==0) {
        return _nameArray.count;
    }
    else   //右区
    {
        //拿到左半区索引,根据索引找到右半区对应数据数组,返回内容大小
        long int num=[pickerView selectedRowInComponent:0];
        NSMutableArray *array=_contentArray[num];
        return array.count;
    }
}

 

UIPickerViewDelegate协议方法

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    //当前为一区,根据行数返回相应的数据
    if (component==0) {
        return _nameArray[row];
    }
    else
    {
        //获取索引值,取得对应数据数组,根据行数返回数据
        long int num=[pickerView selectedRowInComponent:0];
        NSMutableArray *array=_contentArray[num];
        NSString *titleStr=array[row];
        return titleStr;
    }
}
//选择某行时调用
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    //只有当前是左侧区域操作的时候才允许刷新
    if (component==0) {
        [pickerView reloadComponent:1];
        [pickerView selectRow:0 inComponent:1 animated:YES];
    }
}

运行效果如图:

技术分享

 

UIPickerView

标签:

原文地址:http://www.cnblogs.com/kyuubee/p/4846405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!