美文网首页
UIPickerView使用

UIPickerView使用

作者: ahsmliubin | 来源:发表于2016-10-15 12:27 被阅读0次

    最近,上课讲解了日期选择器和普通数据选择器的使用,上课讲解的案例是假期学生去向登记,该项目有一定的实际意义,可以在后期的教学中不断的有话,并和数据库老师去协调一些,能不能数据库中解决一下数据的问题,当然这部分知识现在暂时还不需要。

    目前,我的课堂教学上已经完成了离校日期、返校日期、地域选择等内容的输入设计,前面两个难度不大,地域选择的处理上,对于初学者有如下问题要解决:

    1、解析plist文件;

    2、加载数据到数据选择控件,使用PickerView控件的属性和方法:(1)使用何种协议;(2)数据源属性和代理属性;(3)设置组件的个数(4)返回某列数据的行数(5)设置每行的文本显示(6)数据联动

    3.在实现(4)、(5)的功能时提炼一个loadData方法

    程序的源码如下:


    //

    //ViewController.m

    //testPicker

    //

    //Created by dxx on 2016/10/8.

    //Copyright © 2016年tyh. All rights reserved.

    //

    #import"ViewController.h"

    @interfaceViewController()

    //解析plist文件并将结果存储到字典中?为什么用字典

    @property(nonatomic,strong)NSDictionary* cityNames;

    //省

    @property(nonatomic,strong)NSArray* provinces;

    //市

    @property(nonatomic,strong)NSArray* cities;

    @end

    @implementationViewController

    //获取数据,解析plist文件

    -(NSDictionary*)cityNames{

    if(_cityNames==nil) {

    NSString* path=[[NSBundlemainBundle]pathForResource:@"cityData"ofType:@"plist"];

    _cityNames=[NSDictionarydictionaryWithContentsOfFile:path];

    }

    return_cityNames;

    }

    -(NSArray*)provinces{

    if(_provinces==nil) {

    _provinces=[self.cityNamesallKeys];

    }

    return_provinces;

    }

    //加载数据到组件

    //1.设置组件的个数

    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{

    return2;

    }

    //2.返回某列数据的行数

    -(NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component{

    if(component==0) {

    return self.provinces.count;

    }else{

    [selfloadData:pickerView];

    return self.cities.count;

    }

    }

    //3.设置每行的文本显示

    -(NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    if(component==0) {

    return self.provinces[row];

    }

    else{

    [self  loadData:pickerView];

    return  self.cities[row];

    }

    }

    //4.以上问题的解决都涉及到加载数据问题,写loadData方法

    -(void)loadData:(UIPickerView*)pickerView{

    NSIntegerselRow=[pickerViewselectedRowInComponent:0];

    NSString*key=self.provinces[selRow];

    self.cities=[self.cityNamesvalueForKey:key];

    }

    //5.数据联动

    -(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

    if(component==0) {

    [pickerViewreloadComponent:1];

    [pickerViewselectRow:0inComponent:1animated:YES];

    }

    }

    - (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    }

    - (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

    }

    @end


    plist文件结构如下:

    相关文章

      网友评论

          本文标题:UIPickerView使用

          本文链接:https://www.haomeiwen.com/subject/bhhnyttx.html