zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    java拦截器与过滤器打印请求url与参数
    mybatis学习笔记(六)使用generator生成mybatis基础配置代码和目录结构
    【IDEA】IDEA创建Maven的Web项目并运行以及打包
    【环境变量】Linux 下三种方式设置环境变量与获取环境变量
    【Git】GitHub的SSH提交配置[
    spring配置redis注解缓存
    【查看linux配置】查看linux系统常用的命令,Linux查看系统配置常用命令
    Redis集群
    linux中wget 、apt-get、yum rpm区别
    spring+redis的集成,redis做缓存
  • 原文地址:https://www.cnblogs.com/cqchen/p/3765023.html
Copyright © 2011-2022 走看看