你的位置:首页 > 操作系统

[操作系统]UIPickerView简单应用


下面是一些效果图

 

 

 

 

 

下面是代码。有些枯燥 , 其实并不难 。

 

 

#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>@property(strong,nonatomic) UIPickerView *picker;@property(strong,nonatomic) NSMutableArray *sheng;@property(strong,nonatomic) NSMutableArray *shi;@property(strong,nonatomic) NSArray *array;@end

 

 

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];  self.sheng=[NSMutableArray array];  self.shi=[NSMutableArray array];  NSBundle *bundle=[NSBundle mainBundle];  NSString *path=[bundle pathForResource:@"city.plist" ofType:nil];  self.array=[NSArray arrayWithContentsOfFile:path];  for (NSDictionary *ar1 in self.array) {    NSArray *ar2=[ar1 objectForKey:@"Cities"];    [self.sheng addObject:[ar1 objectForKey:@"State"]];    for (NSDictionary *ar3 in ar2) {//      NSLog(@"%@",[ar3 objectForKey:@"city"]);    [self.shi addObject:[ar3 objectForKey:@"city"]];          }          }  self.picker=[[UIPickerView alloc]initWithFrame:CGRectMake(0, 200, 414, 300)];  self.picker.backgroundColor=[UIColor greenColor];    [self.view addSubview: self.picker];  self.picker.delegate=self;  self.picker.dataSource=self;  }#pragma mark -数据源 nubertOfComponentsInPickerView:-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{  return 2;}#pragma mark - 数据源 pickerView: attributedTitleForRow: forComponent:-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{       if (component==0) {    return self.sheng.count;  }     return self.shi.count;}#pragma mark - 显示信息方法 delegate-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{  if (component==0) {    return self.sheng[row];      }        return self.shi[row];}#pragma mark -选中行的信息-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{  if (component==0) {    //清除上次选择地城市    [self.shi removeAllObjects];    NSDictionary *dic=[self.array objectAtIndex:row];//     NSLog(@"%@",dic);    NSArray *arr1=dic[@"Cities"];       NSMutableArray * arr2 =[NSMutableArray array];    for (NSDictionary * dic in arr1) {      [arr2 addObject:dic[@"city"]];                }    self.shi=arr2;    [self.picker selectRow:row inComponent:0 animated:YES];        [self.picker reloadComponent:1];        }  else {    NSInteger firstRow=[self.picker selectedRowInComponent: 0];    NSInteger secondRow=[self.picker selectedRowInComponent:1];        NSString *firstString=[self.sheng objectAtIndex:firstRow];    NSString *secondString=[self.shi objectAtIndex:secondRow];            NSString *message=[NSString stringWithFormat:@"您确定要选择%@%@吗?",firstString,secondString];    UIAlertController *alertMessage=[UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];        UIAlertAction *cancle=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];        UIAlertAction *ok=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];        [alertMessage addAction:cancle];    [alertMessage addAction:ok];    [self presentViewController:alertMessage animated:YES completion:nil];    NSLog(@"%@%@",firstString,secondString);  }        }  #pragma mark - 行高-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{  if (component==0) {     return 80;  }  return 50;}- (void)didReceiveMemoryWarning {  [super didReceiveMemoryWarning];  // Dispose of any resources that can be recreated.}@end