美文网首页
ios PickView 选择器

ios PickView 选择器

作者: 万忍 | 来源:发表于2017-02-19 19:33 被阅读128次

1.#import "ViewController.h"@interface ViewController (){

NSArray *_province;

NSDictionary *_city;

NSDictionary *_country;

}

@end

2.数据

//省

_province = @[@"北京", @"广西", @"广东"];

//市

_city = @{

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

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

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

//县区

_country = @{

@"朝阳区":@[@"朝阳区1", @"朝阳区2", @"朝阳区3"],

@"东城区":@[@"东城区1", @"东城区2",@"东城区3",@"东城区4"],

@"西城区":@[@"西城区1", @"西城区2", @"西城区3",@"西城区4"],

@"桂林市":@[@"桂林市1", @"桂林市2", @"桂林市3"],

@"南宁市":@[@"南宁市1", @"南宁市2",@"南宁市3",@"南宁市4"],

@"惠州市":@[@"惠州市1", @"惠州市2", @"惠州市3",@"惠州市4"],

@"广州市":@[@"广州市1", @"广州市2", @"广州市3"],

@"深圳市":@[@"深圳市1", @"深圳市2",@"深圳市3",@"深圳市4"],

@"东莞市":@[@"东莞市1", @"东莞市2", @"东莞市3",@"东莞市4"],

};

3.绑定self.picker.dataSource = self;self.picker.delegate = self;

4.方法

#pragma mark - 该方法的返回值决定该控件包含多少列

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView

{

return 3;

}

#pragma mark - 该方法的返回值决定该控件指定列包含多少个列表项

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

if (0 == component)

{

return _province.count;

}

if (1 == component) {

NSInteger rowProvince = [pickerView selectedRowInComponent:0];

NSString *provinceName = _province[rowProvince];

NSArray *citys = _city[provinceName];

return citys.count;

}else{

NSInteger rowProvince = [pickerView selectedRowInComponent:0];

NSString *provinceName = _province[rowProvince];

NSArray *citys = _city[provinceName];

NSInteger rowCity = [pickerView selectedRowInComponent:1];

NSString *cityName = citys[rowCity];

NSArray *country = _country[cityName];

return country.count;

}

}

#pragma mark - 该方法返回的NSString将作为UIPickerView中指定列和列表项的标题文本

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

{

if (0 == component) {

return _province[row];

}

if(1 == component){

NSInteger rowProvince = [pickerView selectedRowInComponent:0];

NSString *provinceName = _province[rowProvince];

NSArray *citys = _city[provinceName];

return citys[row];

}else{

NSInteger rowProvince = [pickerView selectedRowInComponent:0];

NSString *provinceName = _province[rowProvince];

NSArray *citys = _city[provinceName];

NSInteger rowCity = [pickerView selectedRowInComponent:1];

NSString *cityName = citys[rowCity];

NSArray *country = _country[cityName];

return country[row];

}

}

6.关联

#pragma mark - 当用户选中UIPickerViewDataSource中指定列和列表项时激发该方法

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

{

if(0 == component){

[pickerView reloadComponent:1];

[pickerView reloadComponent:2];

}

if(1 == component)

[pickerView reloadComponent:2];

NSInteger rowOne = [pickerView selectedRowInComponent:0];

NSInteger rowTow = [pickerView selectedRowInComponent:1];

NSInteger rowThree = [pickerView selectedRowInComponent:2];

NSString *provinceName = _province[rowOne];

NSArray *citys = _city[provinceName];

NSString *cityName = citys[rowTow];

NSArray *countrys = _country[cityName];

NSLog(@"%@~%@~%@", _province[rowOne], citys[rowTow],countrys[rowThree]);

}

相关文章

网友评论

      本文标题:ios PickView 选择器

      本文链接:https://www.haomeiwen.com/subject/vgbjwttx.html