PickView简单的依赖
发布时间:2020-12-13 22:14:08 所属栏目:百科 来源:网络整理
导读:#import "YXDependentComponentPickerViewController.h"#define kStateComponent 0#define kZipComponent 1@interface YXDependentComponentPickerViewController () UIPickerViewDataSource,UIPickerViewDelegate@property (weak,nonatomic) IBOutlet UIPic
#import "YXDependentComponentPickerViewController.h" #define kStateComponent 0 #define kZipComponent 1 @interface YXDependentComponentPickerViewController () <UIPickerViewDataSource,UIPickerViewDelegate> @property (weak,nonatomic) IBOutlet UIPickerView *DependentPicker; - (IBAction)buttonPress:(UIButton *)sender; /** <#type#>*/ @property (nonatomic,strong) NSDictionary *stateZip; // dict /** <#type#>*/ @property (nonatomic,strong) NSArray *states; // keys /** <#type#>*/ @property (nonatomic,strong) NSArray *zips; // values // 字典中包含n个数组 // stateZip allKeys - > states // stateZip key -> value : states @end @implementation YXDependentComponentPickerViewController - (NSArray *)states { if (_states == nil) { NSMutableArray *keyTmp = [[NSMutableArray alloc] init]; NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; for (int i = 0; i < 26; i++) { char ch = 'A' + i; NSString *key = [NSString stringWithFormat:@"%c",ch]; [keyTmp addObject:key]; NSMutableArray *tmpArr = [[NSMutableArray alloc] init]; for (int j = 0; j < 10; j++) { [tmpArr addObject:[NSString stringWithFormat:@"%@---%d",key,j]]; } [dict setObject:tmpArr forKey:key]; } self.stateZip = dict; self.states = keyTmp; } return _states; } - (void)viewDidLoad { [super viewDidLoad]; NSString *selectedState = self.states[0]; // 字典中第1个key -- A self.zips = self.stateZip[selectedState]; } - (IBAction)buttonPress:(UIButton *)sender { // 根据位置获取数据 NSInteger stateRow = [self.DependentPicker selectedRowInComponent:kStateComponent]; NSInteger zipRow = [self.DependentPicker selectedRowInComponent:kZipComponent]; NSString *state = self.states[stateRow]; NSString *zip = self.zips[zipRow]; NSString *title = [[NSString alloc] initWithFormat:@"You selected zip code %@",zip]; NSString *message = [[NSString alloc] initWithFormat:@"%@ is in %@",zip,state]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil,nil]; [alertView show]; } #pragma mark - #pragma mark picker data source methods - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 2; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == kStateComponent) { return self.states.count; } return self.zips.count; } #pragma mark picker delegate methods - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == kStateComponent) { return [self.states objectAtIndex:row]; } return self.zips[row]; } /** * 只要选择器的选择发生了变化,就会调用这个方法,在这个方法中检查component参数可以知道发生变化的是否是左侧的滚轮,如果确实是左侧的滚轮发生了变化,那么右侧的内容也会跟着发生变化。 * */ - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == kStateComponent) { NSString *selectedState = self.states[row]; self.zips = self.stateZip[selectedState]; [self.DependentPicker reloadComponent:kZipComponent]; // [self.DependentPicker reloadAllComponents]; [self.DependentPicker selectRow:0 inComponent:kZipComponent animated:YES]; } } - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { if (component == kZipComponent) { return 90.0f; } return 200.f; } @end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |