博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIPickerView城市选择小Demo
阅读量:6233 次
发布时间:2019-06-21

本文共 2731 字,大约阅读时间需要 9 分钟。

hot3.png

重在UIPickerView的DataSourceDelegate和Delegate方法

效果图:

115116_BxjF_2534563.png

原代码如下:

#define kScreenWidth     [UIScreen mainScreen].bounds.size.width

#define kScreenHeight     [UIScreen mainScreen].bounds.size.height

#import "ViewController.h"

ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>

@property (nonatomic , strong) UIPickerView *pickerView;

@property (nonatomic , strong) NSArray *provinceArr;

@property (nonatomic , strong) NSDictionary *cityDic;

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    [self addPickerView];

}

-(void) addPickerView

{

    [self.view addSubview:self.pickerView];

}

#pragma mark UIPivkerView DataSource Delegate

- (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    return 2;

}

- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

{

    if (component == 0) {

        return self.provinceArr.count;

    }

    else {

        NSInteger proviceRow = [pickerView selectedRowInComponent:0];

        NSString *provincName = self.provinceArr[proviceRow];

        NSArray *cityArr = self.cityDic[provincName];

        return cityArr.count;

    }

}

#pragma mark UIPickerView Delegate

- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{

    if(component == 0){

        [pickerView reloadComponent:1];

    }

    if(component == 1){

    NSInteger rowOne = [pickerView selectedRowInComponent:0];

    NSInteger rowTow = [pickerView selectedRowInComponent:1];

    NSString *provinceName = self.provinceArr[rowOne];

    NSArray *citys = self.cityDic[provinceName];

    NSString *cityName = citys[rowTow];

    NSLog(@"%@,%@",provinceName,cityName);

}

}

- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

    if(component == 0){

        return self.provinceArr[row];

    }

    if(component == 1){

        NSInteger rowOne = [pickerView selectedRowInComponent:0];

        NSString *provinceName = self.provinceArr[rowOne];

        NSArray *citys = self.cityDic[provinceName];

        NSString *cityName = citys[row];

        return cityName;

    }

    return nil;

}

#pragma mark getter

- (UIPickerView *) pickerView

{

    if (!_pickerView) {

        _pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, kScreenHeight-300, kScreenWidth, 300)];

        _pickerView.dataSource = self;

        _pickerView.delegate = self;

    }

    return _pickerView;

}

- (NSArray *) provinceArr

{

    if (!_provinceArr) {

        _provinceArr = @[@"北京", @"广西", @"广东",@"湖南"];

    }

        return _provinceArr;

}

- (NSDictionary *) cityDic

{

    if (!_cityDic) {

        _cityDic = @{

                  @"北京":@[@"朝阳区", @"东城区", @"西城区"],

                  @"广西":@[@"桂林市", @"南宁市"],

                  @"广东":@[@"惠州市", @"广州市", @"深圳市",@"东莞市"],

                  @"湖南":@[@"长沙市",@"湘潭市",@"株洲市",@"常德市"]

                  };

    }

    return _cityDic;

}

此Demo在于理解UIPickerView,对于要实现城市地区功能选择的小伙伴可建立一个.plist文件,在文件中添加省份和城市并一一对应。

后续将发表实现其功能的代码?。

转载于:https://my.oschina.net/u/2534563/blog/636219

你可能感兴趣的文章
jzoj5990. 【北大2019冬令营模拟2019.1.6】Bear (状压dp)
查看>>
在CentOS上安装Python3的三种方法
查看>>
[PKUWC2018]随机算法
查看>>
《大话设计模式》读书笔记-第25章 中介者模式
查看>>
spring mvc-@CookieValue注解
查看>>
vue-router跳转到相同路由但页面没刷新
查看>>
2 .1 .6 软件要求
查看>>
断言函数
查看>>
oracle11gr2 netca 无法启动 报错
查看>>
【图】二分图最大权匹配
查看>>
mt19937 -- 高质量随机数
查看>>
随时修改添加,thinkphp小知识
查看>>
[BZOJ3625]小朋友和二叉树
查看>>
[CF919E]Congruence Equation
查看>>
Eclipse中绑定java源代码
查看>>
Hadoop学习笔记(1):WordCount程序的实现与总结
查看>>
Java IO最详解
查看>>
概率论 --- Uva 11181 Probability|Given
查看>>
nginx配置允许指定域名下所有二级域名跨域请求
查看>>
valgrind内存检测工具
查看>>