本文主要是介绍UIPickerView_前进的火车_新浪博客,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#import "PickerViewController.h"
@interface PickerViewController ()<</span>UIPickerViewDataSource,UIPickerViewDelegate>
//准备第一列及第二列的数据
@property(nonatomic,strong)NSDictionary *allData;
@property(nonatomic,strong)NSArray *allCitys;
@property(nonatomic,strong)NSArray *allSubAreas;
@end
@implementation PickerViewController
- (NSDictionary *)allData
{
if (!_allData) {
_allData = @{
@"北京":@[@"东城",@"西城",@"朝阳",@"海淀"],
@"上海":@[@"静安",@"徐汇",@"黄浦"],
@"广州":@[@"天河",@"白云",@"越秀"]
};
}
return _allData;
}
- (NSArray *)allCitys
{
if (!_allCitys) {
//将字典中的所有key,取出,作为第一列的数据源
_allCitys = self.allData.allKeys;
}
return _allCitys;
}
- (NSArray *)allSubAreas
{
if (!_allSubAreas) {
//按照allCity[0]这个默认被选中的城市,做key
//找到这个key对应的子地区,取出,作为界面刚刚显示时,默认出现的第二列的数据源
_allSubAreas = [self.allData objectForKey:self.allCitys[0]];
}
return _allSubAreas;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component==0) {
return self.allCitys.count;
}else{
return self.allSubAreas.count;
}
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0) {
return self.allCitys[row];
}else{
return self.allSubAreas[row];
}
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// 只有当选中的数据在第一列时
// 读取选中的城市名,做key,找到该城市对应的
// 子地区
if (component == 0) {
// 根据选中的行号,获取该行对应的城市名
NSString *selectedCityName = self.allCitys[row];
// 根据选中的城市名做key,找到子地区
self.allSubAreas = [self.allData objectForKey:selectedCityName];
// 更新界面
[pickerView reloadComponent:1];
// 设置第二列的第一行处于被选中
[pickerView selectRow:0 inComponent:1 animated:YES];
}
}
这篇关于UIPickerView_前进的火车_新浪博客的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!