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
  • 相关阅读:
    HDUoj(1002)A + B Problem II
    HIT Summer 20180731
    Windows10下python3.5对维基百科语料用word2vec进行训练寻找同义词相似度
    关键词抽取
    win10+python遇到:Using TensorFlow backend.错误
    Windows下Python3.5+numpy+keras+tesorflow的环境配置
    常用的一些序列号
    Umbraco扩展开发
    Umbraco Content属性
    Windows查看端口占用
  • 原文地址:https://www.cnblogs.com/cqchen/p/3765023.html
Copyright © 2011-2022 走看看