zoukankan      html  css  js  c++  java
  • 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;
    }

    效果:




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

  • 相关阅读:
    【DevExpress v17.2新功能预告】DevExtreme TreeList
    MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(六)
    【DevExpress v17.2新功能预告】改进DevExtreme编辑器
    MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(五)
    DevExpress DateEdit 5 常见问题解决方法
    CSS五种方式实现 Footer 置底
    css中雪碧图(sprite)的使用及制作方法
    CSS实现垂直居中的5种方法
    如何使用CSS创建巧妙的动画提示框
    css定位方式有哪几种?
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4333141.html
Copyright © 2011-2022 走看看