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

UIPickerView

2019-11-14 18:14:11
字体:
来源:转载
供稿:网友

有时候我们需呀输入的内容是联动的,比如省份与城市,书名与章节等,这时候我们可以使用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];
    }
}

运行效果如图:

 

上一篇:UITableView的简单使用

下一篇:UIDatePicker

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