![这里写图片描述](https://img-blog.csdn.net/20150611221130322)
#import <Foundation/Foundation.h>
@interface WQProvinceData : NSObject
/** 城市*/
@property (nonatomic, strong) NSArray *cities;
/** 城市名称*/
@property (nonatomic, strong) NSString *name;
+ (instancetype)provinceWithDict:(NSDictionary *)dict;
@end
#import "WQProvinceData.h"
@implementation WQProvinceData
+ (instancetype)provinceWithDict:(NSDictionary *)dict
{
WQProvinceData *provinceData = [[WQProvinceData alloc]init];
[provinceData setValuesForKeysWithDictionary:dict];
return provinceData;
}
@end
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
#import "ViewController.h"
#import "WQProvinceData.h"
@interface ViewController ()<UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate>
@property (weak, nonatomic) IBOutlet UITextField *birthdayField;
@property (nonatomic, strong) UIDatePicker *datePicker;
@property (weak, nonatomic) IBOutlet UITextField *cityField;
@property (nonatomic, strong) NSMutableArray *provinceData;
@property (nonatomic, strong) UIPickerView *pickerView;
@property (nonatomic, assign) NSInteger provinceIndex;
@end
@implementation ViewController
- (NSMutableArray *)provinceData
{
if (_provinceData == nil)
{
_provinceData = [NSMutableArray array];
NSArray *arrFromPlist = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"provinces.plist" ofType:nil]];
[arrFromPlist enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
WQProvinceData *data = [WQProvinceData provinceWithDict:obj];
[_provinceData addObject:data];
}];
}
return _provinceData;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.birthdayField.delegate = self;
[self setUpBirthDayKeyBoard];
self.cityField.delegate = self;
[self setUpCityKeyBoard];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
return NO;
}
- (void)setUpBirthDayKeyBoard
{
self.datePicker = [[UIDatePicker alloc]init];
self.birthdayField.inputView = self.datePicker;
self.datePicker.datePickerMode = UIDatePickerModeDate;
self.datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
[self.datePicker addTarget:self action:@selector(birthdayFieldValueChange:) forControlEvents:UIControlEventValueChanged];
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if (textField == self.birthdayField) {
[self birthdayFieldValueChange:self.datePicker];
}else if (textField == self.cityField)
{
[self pickerView:self.pickerView didSelectRow:0 inComponent:0];
}
}
- (void)birthdayFieldValueChange:(UIDatePicker *)datePicker
{
NSDate *date = datePicker.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yy-MM-dd";
NSString *dateStr = [formatter stringFromDate:date];
self.birthdayField.text = dateStr;
}
#pragma mark - -----城市选择器
- (void)setUpCityKeyBoard
{
self.pickerView = [[UIPickerView alloc]init];
self.cityField.inputView = self.pickerView;
self.pickerView.dataSource = self;
self.pickerView.delegate = self;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component == 0) {
return self.provinceData.count;
}else
{
WQProvinceData *tempData = self.provinceData[_provinceIndex];
return tempData.cities.count;
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0) {
WQProvinceData *tempData = self.provinceData[row];
return tempData.name ;
}else
{
WQProvinceData *tempData = self.provinceData[_provinceIndex];
return tempData.cities[row];
}
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if(component == 0)
{
_provinceIndex = [pickerView selectedRowInComponent:0];
[self.pickerView reloadComponent:1];
[self.pickerView selectRow:0 inComponent:1 animated:YES];
}
WQProvinceData *proData = self.provinceData[_provinceIndex];
NSInteger cityIndex = [pickerView selectedRowInComponent:1];
self.cityField.text = [NSString stringWithFormat:@"%@ - %@",proData.name, proData.cities[cityIndex]];
}
@end