首页 > 代码库 > iOS.UIKit.11.UIPickerView

iOS.UIKit.11.UIPickerView

一、案例介绍:点击UIButton,将选中的省市信息显示在UILabel中,如图01,02

图01图02

二、案例步骤:

1、选择Simple View Aplication,取名cq.37.普通选择器,如图03

图03

2、Main.storyboard,如图04

3、provinces_cities.plist

4、CQ37ViewController.h

#import <UIKit/UIKit.h>

@interface CQ37ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>

@property (weak,nonatomic) IBOutlet UIPickerView *pickerView;

@property (weak,nonatomic) IBOutlet UILabel *label;

@property (strong,nonatomic) NSDictionary *pickerData;
@property (strong,nonatomic) NSArray *pickerProvincesData;
@property (strong,nonatomic) NSArray *pickerCitiesData;

- (IBAction)onclick:(id)sender;
@end

5、CQ37ViewController.m

#import "CQ37ViewController.h"

@interface CQ37ViewController ()

@end

@implementation CQ37ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSBundle *mainBundle = [NSBundle mainBundle];
    NSString *plistPath = [mainBundle pathForResource:@"provinces_cities" ofType:@"plist"];
    
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
    self.pickerData = dict;
    
    self.pickerProvincesData = [dict allKeys];
    
    NSString *selectedProvince = [self.pickerProvincesData objectAtIndex:0];
    self.pickerCitiesData = [self.pickerData objectForKey:selectedProvince];
    
    self.pickerView.delegate = self;
    self.pickerView.dataSource = self;
}

- (IBAction)onclick:(id)sender
{
    NSInteger row1 = [self.pickerView selectedRowInComponent:0];
    NSInteger row2 = [self.pickerView selectedRowInComponent:1];
    
    NSString *selected1 = [self.pickerProvincesData objectAtIndex:row1];
    NSString *selected2 = [self.pickerCitiesData objectAtIndex:row2];
    
    NSString *title = [[NSString alloc] initWithFormat:@"%@,%@",selected1,selected2];
    
    self.label.text = title;
}
#pragma mark UIPickerViewDataSource method
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if (component == 0) {
        return [self.pickerProvincesData count];
    }else{
        return [self.pickerCitiesData count];
    }
}
#pragma mark 实现协议UIPickerViewDelegate方法
-(NSString *)pickerView:(UIPickerView *)pickerView
            titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    if (component == 0) {//选择省份名
        return [self.pickerProvincesData objectAtIndex:row];
    } else {//选择市名
        return [self.pickerCitiesData objectAtIndex:row];
    }
}

- (void)pickerView:(UIPickerView *)pickerView
      didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    if (component == 0) {
        NSString *seletedProvince = [self.pickerProvincesData objectAtIndex:row];
        NSArray *array = [self.pickerData objectForKey:seletedProvince];
        self.pickerCitiesData = array;
        [self.pickerView reloadComponent:1];
    }
}
@end