• 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;
    }

    效果:




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

  • 相关阅读:
    javascript不用正则验证输入的字符串是否为空(包含空格)
    最近真的很忙
    加油吧 骚年QAQ
    发现一个问题:个人博客仅仅存在于有生之年,如何一直保存下去呢?
    day01-html
    day04-jQuery
    Day03-jS
    MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05
    MySQL-复杂查询及条件-起别名-多表查询-04
    MySQ-表关系-外键-修改表结构-复制表-03
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4333141.html
Copyright © 2020-2023  润新知