用UIPicker做一个类似省市联动选择的例子
2013-08-16 11:20
141 查看
用UIPicker做一个类似省市联动选择的例子
ViewController.h:
#import <UIKit/UIKit.h> @interface ForthViewController :UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> @property (retain,nonatomic) IBOutlet UIPickerView *picker; @property(nonatomic,retain)NSDictionary *dictionary; @property(nonatomic,retain)NSArray *states; //省 @property(nonatomic,retain)NSArray *zips;//市 @end ViewController.m:
#import"ForthViewController.h" #define STATE_COMPONENT0 #define ZIP_COMPONENT 1 @interfaceForthViewController ()
@end
@implementation ForthViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; }
- (void)viewDidLoad { [superviewDidLoad]; NSBundle *bundle = [NSBundle mainBundle];//目录,地址 NSURL * url = [bundle URLForResource:@"statedictionary"withExtension:@"plist"]; NSString *path = [bundle pathForResource:@"statedictionary"ofType:@"plist"]; NSLog(@"%@",url); NSLog(@"%@",path); NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path]; self.dictionary = dic; NSLog(@"%@",self.dictionary); NSArray *arr = [self.dictionaryallKeys]; self.states = arr; arr= [self.dictionaryobjectForKey:self.states[0]]; self.zips = arr; }
- (void)didReceiveMemoryWarning { [superdidReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //一个picker有几个compont -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return2; } //每个组件有几行数据 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { //创建数据 if(component ==STATE_COMPONENT) { return [self.states count]; //动态获取数字 } else { return [self.zips count]; } } //每行显示的内容 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component ==STATE_COMPONENT) { return [self.states objectAtIndex:row]; } else { return [self.zips objectAtIndex:row]; } } //选择一行就触发的事件 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component ==STATE_COMPONENT) { NSString *str = [self.statesobjectAtIndex:row]; NSArray *arr = [self.dictionaryvalueForKey:self.states[row]]; self.zips = arr; //因为component = ZIP_COMPONENT的数据发生改变,所以要重新导入 [pickerView reloadComponent:ZIP_COMPONENT]; //防止越界,row超过现在的总行数 [pickerViewselectRow:0inComponent:ZIP_COMPONENTanimated:YES]; } }
- (void)dealloc { [_pickerrelease]; [_dictionaryrelease]; [_statesrelease]; [_zipsrelease]; [superdealloc]; } @end
项目源码:http://download.csdn.net/detail/s10141303/5958499
ViewController.h:
#import <UIKit/UIKit.h> @interface ForthViewController :UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> @property (retain,nonatomic) IBOutlet UIPickerView *picker; @property(nonatomic,retain)NSDictionary *dictionary; @property(nonatomic,retain)NSArray *states; //省 @property(nonatomic,retain)NSArray *zips;//市 @end ViewController.m:
#import"ForthViewController.h" #define STATE_COMPONENT0 #define ZIP_COMPONENT 1 @interfaceForthViewController ()
@end
@implementation ForthViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; }
- (void)viewDidLoad { [superviewDidLoad]; NSBundle *bundle = [NSBundle mainBundle];//目录,地址 NSURL * url = [bundle URLForResource:@"statedictionary"withExtension:@"plist"]; NSString *path = [bundle pathForResource:@"statedictionary"ofType:@"plist"]; NSLog(@"%@",url); NSLog(@"%@",path); NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path]; self.dictionary = dic; NSLog(@"%@",self.dictionary); NSArray *arr = [self.dictionaryallKeys]; self.states = arr; arr= [self.dictionaryobjectForKey:self.states[0]]; self.zips = arr; }
- (void)didReceiveMemoryWarning { [superdidReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //一个picker有几个compont -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return2; } //每个组件有几行数据 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { //创建数据 if(component ==STATE_COMPONENT) { return [self.states count]; //动态获取数字 } else { return [self.zips count]; } } //每行显示的内容 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component ==STATE_COMPONENT) { return [self.states objectAtIndex:row]; } else { return [self.zips objectAtIndex:row]; } } //选择一行就触发的事件 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component ==STATE_COMPONENT) { NSString *str = [self.statesobjectAtIndex:row]; NSArray *arr = [self.dictionaryvalueForKey:self.states[row]]; self.zips = arr; //因为component = ZIP_COMPONENT的数据发生改变,所以要重新导入 [pickerView reloadComponent:ZIP_COMPONENT]; //防止越界,row超过现在的总行数 [pickerViewselectRow:0inComponent:ZIP_COMPONENTanimated:YES]; } }
- (void)dealloc { [_pickerrelease]; [_dictionaryrelease]; [_statesrelease]; [_zipsrelease]; [superdealloc]; } @end
项目源码:http://download.csdn.net/detail/s10141303/5958499
相关文章推荐
- 用UIPicker做一个类似省市联动选择的例子
- 8-20学习练习[用两个tableview实现类似省市联动选择效果]
- 8-20学习练习[用两个tableview实现类似省市联动选择效果]
- 用回调实现的省市县区四级下拉选择联动的例子
- 收藏一个POI生成级联菜单选择的例子,选择省市县场景
- EXCEL如何做类似省市联动的二级选择菜单?
- 一个简单的省市选择的例子
- AJAX三级联动省市选择,使用jquery+html+XML
- 一个关于省市级联下拉菜单的例子
- 用一个例子学习PHP的选择和循环
- 基于javascript实现全国省市二级联动下拉选择菜单
- [第六季]11.HTML DOM对象及一个三级联动的例子
- 省市联动选择
- 类似省市联动的查询功能实现
- EXT 省市三级联动及默认选择
- 例子:选择一个联系人
- js实现的全国省市二级联动下拉选择菜单完整实例
- IOS第11天(3:UIPickerView省市联动)
- 一个关无DropDownList无刷新二级联动的例子.
- 总有人问js二级联动问题,给出我写的一个例子