• UIKit框架-高级控件:7.UIPickerView的自定义


    在前面, 我们使用了UIPickerView试验了几次, 与其他UI控件结合在一起使用的也有, 今天我们就把UIPickerView剥的更深入, 让我们更加好的掌握UIPickerVIew, 下面让我们来看看



    1.在.h文件里遵守UIPickerView的代理方法和数据源方法

    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
    
    @end
    




    2.在.m文件里声明全局变量

    @interface ViewController ()
    {
        UIPickerView *_pickerView;
        NSArray *_arrayOne;
        NSArray *_arrayTwo;
    }
    @end
    

    PS:这两个数组分别是要用来存放UIPickerView的左右两边选择器的内容.



    3.实例化UIPickerView

    #pragma mark - 添加UIPikerView
    - (void)myPikerView
    {
        // 1.实例化UIPickerView
        _pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 250, self.view.frame.size.width, 250)];
        [_pickerView setBackgroundColor:[UIColor grayColor]];
        
        // 2.设置UIPickerView的代理方法和数据源方法.
        [_pickerView setDelegate:self];
        [_pickerView setDataSource:self];
        
        // 3.设置是否显示内容
        [_pickerView setShowsSelectionIndicator:YES];
        
        // 4.把UIPickerView添加到self.view
        [self.view addSubview:_pickerView];
    }
    


    4.添加UIPickerView的数据源方法

    // 返回UIPickerView有多少列
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    {
        return 2;
    }
    
    // 返回UIPickerView有多少行
    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
    {
        if (component == 0) {
            return _arrayOne.count;
        } else {
            return _arrayTwo.count;
        }
    }


    5.添加UIPickerView的代理方法

    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
    {
        if (component == 0) {
            return _arrayOne[row];
        } else {
            return _arrayTwo[row];
        }
    }
    
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    {
        NSLog(@"第一列选中的行数是 %ld,第二列选中的行数是 %ld", [pickerView selectedRowInComponent:0], [pickerView selectedRowInComponent:1]);
        
        NSInteger leftCol = [pickerView selectedRowInComponent:0];
        NSInteger rightCol = [pickerView selectedRowInComponent:1];
        
        NSLog(@"%@ ~~~ %@", _arrayOne[leftCol], _arrayTwo[rightCol]);
    
    }
    


    6.定义数组的内容

    - (void)myArray
    {
        _arrayOne = @[@"辰东", @"唐家三少"];
        _arrayTwo = @[@"完美世界", @"天火大道", @"神墓"];
    }
    



    最终效果:






    附件: UIPickerView的代理方法拓展

    - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
    {
        return 100;
    }
    
    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
    {
        UIView *views = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
        [views setBackgroundColor:[UIColor redColor]];
        return views;
    }

    效果:




    好了, 这次我们就讲到这里, 下次我们继续~~

  • 相关阅读:
    同余方程
    倒酒
    机器翻译
    vue 锚点定位
    解决vuex刷新页面数据丢失
    h5 input失去焦点软键盘把页面顶起
    js 监听ios手机键盘弹起和收起的事件
    js 将数组中的每一项安装奇偶重新组合成一个数组对象
    moment.js获取本周本月本年的开始日期和结束日期
    vue 所有的路由跳转加一个统一参数
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4333141.html
Copyright © 2020-2023  润新知