美文网首页
UI进阶1 UIDatePicker

UI进阶1 UIDatePicker

作者: SoManyDumb | 来源:发表于2016-08-04 19:08 被阅读62次

    UIPickView和UIDatePicker

    • 1.UIPickView什么时候用?
      • 通常在注册模块,当用户需要选择一些东西的时候,比如说城市,往往
      弹出一个PickerView给他们选择。 • 老虎机效果
    • 2.UIPickView常见用法,演示实例程序
      • 1>独立的,没有任何关系 =>菜单系统。
      • 2>相关联的,下一列和第一列有联系=>省会城市选择
      • 3>图文并帽,=>国旗选择。
    • 3.UIPickView
    • 4.UIDatePicker什么时候用? 当用户选择日期的时候,一般弹出一个UIDatePicker给用户选择。
    • 5.UIDatePickerios6和ios7的区别

    点餐系统PickerView

    • 1.搭建界面
      • 1> 注意点:PickerView的高度不能改,默认162,PickerView里面每行的高度 可以改,不要弄混淆了。
    • 2.pickerView显示数据
      • 1> 如何使用PickerView展示数据? 进入PickerView头文件,有数据源和代理,联想到UITableView,模仿 UITableView的用法。
      • 2> 让控制器作为PickerView的数据源,控制器遵守PickerView的数据源方法
        • 2.1>两种方式:1.拖线 2.代码 - - -
        • 2.2>系统自带的控件,数据源和代理属性不需要IBOutlet,也能拖 线。自己的属性,想要拖线,必须写IBOutlet。
      • 3> PickerView的数据源方法
        • 1> numberOfComponentsInPickerView: 返回多少列
        • 2> pickerView:numberOfRowsInComponent: 返回第component列有多少 行
        • 3> 和UITableView的区别,每一行长什么样,是由PickerView的代理决 定的。
        • 4> 注意:如果没有返回每一行长什么样子,每行就会显示?,看见?,就 知道没有实现每一行长什么样子的方法。
      • 4> PickerView的代理方法
        • 1> 返回第component列第row行长什么样。
    第component列第row行的展示标题
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
    第component列第row行带属性的标题
    - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger) component
    第component列第row行展示的视图
    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;
    - gView:(UIView *)view;
    
     - 2> 返回第component列每一行的高度和宽度
    
    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component;
    - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component;
    
     - 3> 选中第component列第row行调用
    
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
    
      1. 加载plist数据
      • 1> 分析数据结构
        • 1> 大数组元素个数:多少列
        • 2>大数组里面的小数组: 这一列有多少行。
        • 3> 小数组里的字符串: 每行展示的样子
    • 4.处理菜单选中业务
      • 1> 选中某一列某一行,显示出来
      • 2> 拖动不同列,改变不同的label,拖动第一列改变水果。
      • 3> 判断拖动哪一列,改变对应的label
      • 4> 在viewDidLoad中初始化label显示
      • 5> 取出数组中的数据给label直接赋值 _fruitLabel.text = self.foots[0][0]; 这种 方式不好,如果以后数组里有很多数据,要写很多行。
      • 6> 还有另外一种方式,通过调用代理,给label赋值.唯一不同的,就是列 数,搞个for循序就好了。
    • 5.随机选中某一列的某一行
      • 1> 如何选中某一行 [self.pickerView selectRow:row inComponent:component
        animated:YES];
      • 2> 先随机选中第0列的某一行,随机数取值范围看第0列总共有多少行,
        arc4random_uniform(x)随机0~x-1的数
      • 3> 避免随机出来的行数都一样,需要判断下,随机出来的行数和当前选中 的是否一样,一样就重新随机,用while判断,直到随机到不一样,才行。
      • 4> 问题:label没有显示最新选中的一行。
        原因:手动调用pickview滚动,选中某一行,不会触发代理,我们自己 主动调用代理,让lebel显示选中哪一行.
        注意:只有用户手动滚动才可以触发pickview的代理方法。
      • 5> 每一列都要随机选中,弄个for循序,遍历每一列都随机选中

    相关文章

      网友评论

          本文标题:UI进阶1 UIDatePicker

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