zoukankan      html  css  js  c++  java
  • IOS中级篇 —— picKerView and DatePicKer

    picKerView
    PickerView的高度不能改,默认162,PickerView里面每行的高度 可以改

    显示内容的三个方法
    // pickerView 有多少组
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
    {
       
    return self.foods.count;
    }
     
    // pickerView component 多少行
    - (
    NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
    {
        return [self.foods[component] count];
    }

    // component组的第row行显示的内容是什么
    - (
    NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
    {
       returnself.foods[component][row];
    }


    // 返回一个view
    - (UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView*)view
    {

       
    // ios 7 8 里面
       
    //    view 一直为空
       
    // ios 6
       
    //    if (view == nil) {
       
    //            FlagView* flagView = [[NSBundle mainBundle] loadNibNamed:@"FlagView" owner:nil options:nil][0];
       
    //    }
       
    //    return  flagView;

       
    FlagView* flagView = [FlagView flagView];
        flagView.flag = self.flags[row];
        return flagView;
    }
    // 返回每行的行高
    - (CGFloat)pickerView:(UIPickerView*)pickerView rowHeightForComponent:(NSInteger)component
    {
       
    return 60;
    }
     
     
    二级联运 一个bug
    NSInteger proIndex = [pickerView selectedRowInComponent:0];    根据传进来的的组 得到当行选中的行
    如果直接用这个proIndex 来得到下面二级的数据的话,那么在两组同时滚动时 就会出现bug
    解决办法  申明一个属性来记录当前选中的组的行
        if (component == 0) {
            return [self.provinces[row] name];
        } else{ //你告诉我当前选中的是哪一行   
            NSInteger index = [self.pickerView selectedRowInComponent:0];
                // 我告诉你当前行有多少行下级内容
            return [self.provinces[index] cities][row]; 
        }
    总结联动      如果是联运的话  那么 下一级的行数 一定是根据 上一级选中的行 来确定的

    - (void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    {
       
    if (component == 0) {
           
    // 刷新pickerView

           
    // 刷新某一组
            [pickerView
    reloadComponent:1];
           
    // 刷新所有的组
            //        [pickerView reloadAllComponents];
            // 刷新后给记录行的属性赋值
            _selectedProIndex = row;
        }
    }

        // 先取 你当前 在哪个省下
            //    取值的时候  就可以这样取了
            NSInteger proIndex = self.selectedProIndex;
            return [self.provinces[proIndex] cities][row];


    获取pickerView某一组当前选择的位置
    NSInteger selectIndex = [self.pickerView selectedRowInComponent:i];

    // pickerView的某一组滚动到某一行
    [pickerView selectRow:0 inComponent:1 animated:YES];

    // 刷新某一组
         [pickerView reloadComponent:1];
    // 刷新所有的组
         [pickerView reloadAllComponents];

    DatePicker

    //在给datepicker设置点击事件的时候  只能用addTarget方法 UIControlEventValueChanged 方式

    [pciekr addTarget:self action:@selector(hehe:) forControlEvents:UIControlEventValueChanged];
    // 设置中文(locale属性)
    datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];

    // 设置显示格式
      datePicker.datePickerMode = UIDatePickerModeDate;
    // xcode 6.3.1 中 在storyboard中拖datePicker控件直接修改Date为custom可能会出现无法滚动的情况 解决方法:重启模拟器

    // storyboard中 Mode:datePicker显示的时间格式
    // storyboard中 Locale:datePicker显示的语言
    // storyboard中 Date:datePicker默认显示的时间
    // storyboard中 Minimum Date能滚动到的最小的时间
    // storyboard中 Maximum Date能滚动到的最大的时间 
     
  • 相关阅读:
    print(f"*******")这里的f代表什么意思?
    利用Datafactory实现测试数据快速生成
    jmeter+ant+jenkins部署(二)
    jmeter+ant+jenkins部署(一)
    GET与POST的区别
    Locust压测--带Token
    Jmeter接口实例:带token
    jmeter--md5加密
    python加密之hashlib
    如何获取Android app的apk包名和launcherActivity?
  • 原文地址:https://www.cnblogs.com/deng1989/p/4599002.html
Copyright © 2011-2022 走看看