UIPickerView&UIDatePicker

UIPickerView&UIDatePicker

UIPcikerView数据选择器

点餐系统的案例
  1. 搭建界面

  2. 显示数据

     1. 设置数据源和代理
     2. 成为数据源和代理
     3. 实现数据源和代理方法
    

注意:数组中元素(id)不能使用点语法,只能用方法来调用.

  1. 逐个赋值(3个Lbale)

    1. 连线
    2. 调用实现滚动的方法(相当于tableView中选中cell的方法)
    3. 代理方法都能在实现中进行手动调用.
    
  2. 随机点餐

    1. 根据每列的范围产生相应的随机数(for循环列数)
    2. 自动滚动到哪个位置(自动与手动是有区别的
    
 //根据获取到的随机值滚动到那一行(自动滚)
 [self.myPicker selectRow:random inComponent:i animated:YES];
 //刷新数据(你手动滚,会调用这个方法)
 [self pickerView:self.myPicker didSelectRow:random inComponent:i];
   3. 赋值
  1. 解决bug,当当前列随机数与产生随机数的一致时它不会滚动(一样怎么回滚,保证能滚得话,做一个死循环判断)
国旗选择

返回每行中的字符串无法满足要求,返回一个UIView的方法.

UIDatePicker应用:日期选择
自身属性
 //设置显示模式 
 _dataPicker.datePickerMode = UIDatePickerModeTime;
 //设置区域
 _dataPicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh-Hans"];
  1. UIDatePicker和UIPickerView没有任何关系(只是长的像,不是继承之类的关系
  2. UIToolBar的使用(工具条)
  3. UIBarButtonItem(这个是一个集成自NSOBject的类,不是UIView)与UIButton也没有任何关系.

//纯代码实现键盘的空间替换,文本框的输出view
self.text.inputView
//实现键盘附件的替换
self.text.inputAccessoryView.(并且注意这个替换bar必须设置frame(不然无法点击只能看见)

当你滚动时日期改变可以通过sender.date获取.
 - (IBAction)upPickerChangeValue:(UIDatePicker *)sender 
NSDate的复习
  1. 首先有一个NSDate对象.
  2. 创建一个NSDateFormatter对象来修改date的格式
  3. formatter.dateFormat来设置格式
  4. 返回字符串[formatter stringFromDate:date];
省市选择(两级联动)
  1. 懒加载

  2. 实现数据展示

    - 因为是两级联动,第一列显示的行数与数据都是根据第0列你所取出的索引来显示的(取出省的索引),再根据这个角标就能获取当前省的城市个数了.
    
  3. 刷新数据(防止越界)

  4. 两个同时滚动产生的越界问题解决,设置临时集合替换?原理???

/* 
 bug解决(同时滚动时产生bug,数组越界,你在滚动时,还没有刷新(是上一个数组的集合),所以角标是上一次的角标,如果太大,你现在滚动到下一列大的角标时就会产生越界问题,用临时集合每一次取得都是它本身的角标,所以不会产生越界问题).
 解决方法:
 1.设置临时集合
 2.在numbe...方法中将获取到的集合赋值给临时集合
 3.在 titleForRow和didSelectRow方法中在列数为1时直接调用临时集合中的数据
 */

你可能感兴趣的:(UIPickerView&UIDatePicker)