论 Swift 开发入门 : 选择器(UIPickerView)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44487269

------------------------------------------------------------------------------------------

1、Summary

------------------------------------------------------------------------------------------

2、Code

//
//  ViewController.swift
//  UIPickerViewSample
//
//  Created by jinnchang on 15/3/18.
//  Copyright (c) 2015年 Jinn Chang. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    var myPickerView: UIPickerView?

    var provinces = [String: [String]]()
    var cities = [String]()

    override func viewDidLoad() {

        // 载入数据
        provinces = ["浙江省":["杭州市","宁波市"],"安徽省":["黄山市","合肥市"]]
        cities = provinces.values.array[0]

        // 定义一个按钮,使数据回到默认状态
        let button1 = UIButton.buttonWithType(.System) as? UIButton
        button1?.frame = CGRectMake(self.view.frame.width/2 - 200, 50, 400, 50)
        button1?.setTitle("回到默认状态", forState: UIControlState.Normal)
        button1?.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
        button1?.tag = 1

        // 定义一个按钮,刷新所有数据
        let button2 = UIButton.buttonWithType(.System) as? UIButton
        button2?.frame = CGRectMake(self.view.frame.width/2 - 200, 150, 400, 50)
        button2?.setTitle("刷新所有元素", forState: UIControlState.Normal)
        button2?.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
        button2?.tag = 2

        // 定义一个按钮,显示当前选中的省市
        let button3 = UIButton.buttonWithType(.System) as? UIButton
        button3?.frame = CGRectMake(self.view.frame.width/2 - 200, 250, 400, 50)
        button3?.setTitle("显示当前选中省市", forState: UIControlState.Normal)
        button3?.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
        button3?.tag = 3

        // 初始化 myPickerView
        myPickerView = UIPickerView(frame: CGRectMake(0, self.view.frame.height - 200, self.view.frame.width, 200))
        myPickerView?.delegate = self
        myPickerView?.dataSource = self
        // 显示选中框,iOS7 以后不起作用
        myPickerView?.showsSelectionIndicator = false

        self.view.addSubview(button1!)
        self.view.addSubview(button2!)
        self.view.addSubview(button3!)
        self.view.addSubview(myPickerView!)
    }

    // 设置列数
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 2
    }

    // 设置行数
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if(component == 0){
            return provinces.keys.array.count
        }
        if(component == 1){
            return provinces.count
        }
        return 0
    }

    // 设置每行具体内容(titleForRow 和 viewForRow 二者实现其一即可)
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        if(component == 0){
            return provinces.keys.array[row]
        }
        if(component == 1){
            return cities[row]
        }
        return nil
    }

    // 选中行的操作
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if(component == 0){
            cities = provinces[provinces.keys.array[row]]!
            // 重新加载二级选项并复位
            myPickerView?.reloadComponent(1)
            myPickerView?.selectRow(0, inComponent: 1, animated: true)
        }
    }

    /// 响应按钮点击事件
    func buttonAction(sender: UIButton) {
        let num = sender.tag
        switch num {
        case 1:
            // 复原数据并重置
            provinces = ["浙江省":["杭州市","宁波市"],"安徽省":["黄山市","合肥市"]]
            cities = provinces.values.array[0]
            myPickerView?.reloadAllComponents()
            myPickerView?.selectRow(0, inComponent: 0, animated: true)
            myPickerView?.selectRow(0, inComponent: 1, animated: true)
        case 2:
            // 载入新数据并重置
            provinces = ["浙江":["杭州","宁波"],"安徽":["黄山","合肥"]]
            cities = provinces.values.array[0]
            myPickerView?.reloadAllComponents()
            myPickerView?.selectRow(0, inComponent: 0, animated: true)
            myPickerView?.selectRow(0, inComponent: 1, animated: true)
        case 3:
            // 显示当前选中的省市
            let provinceNum = myPickerView?.selectedRowInComponent(0)
            let cityNum = myPickerView?.selectedRowInComponent(1)
            println("province:\(provinces.keys.array[provinceNum!]);city:\(cities[cityNum!])")
        default:
            break
        }
    }

}

------------------------------------------------------------------------------------------

3、Resource

Github 上项目地址:UIPickerViewSample

文章最后更新时间:。参考资料如下:

UIPickerView Class Reference

UIKit
User Interface Catalog: Picker Views

时间: 2024-08-26 14:26:07

论 Swift 开发入门 : 选择器(UIPickerView)的相关文章

[连载]Swift开发入门(05)--- 枚举

??枚举是定义符号常量的手段,它把一堆相似的值组织在一起.例如你在指定文字对齐方式的时候通常有三种可选的值:左对齐.右对齐和居中对齐:你在处理游戏中的方法时可能的取值有东.西.南.北.Swift中的枚举比你了解的其他语言的枚举更加强大,它的行为类似于类和结构体,它甚至可以有自己的方法,包括构造器. 创建枚举 ??我们先通过一个简单的例子来认识一下枚举.玩过扑克牌的都知道,扑克有四种花色,分别是黑桃(spade).红心(heart).草花(club)和方块(diamond),如果我们要做一个扑克游

论 Swift 开发入门:搜索框(UISearchBar)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44827923 ------------------------------------------------------------------------------------------ 代码示例 // // ViewController.swift // UISearchBarSample // // Created by jinnchang on 15/4/1. // C

论 Swift 开发入门:活动指示器(UIActivityIndicatorView)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44828021 ------------------------------------------------------------------------------------------ 代码示例 // // ViewController.swift // UIActivityIndicatorViewSample // // Created by jinnchang on

论 Swift 开发入门 : 滑块(UISlider)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44487407 ------------------------------------------------------------------------------------------ 1.Summary -------------------------------------------------------------------------------------

[连载]Swift开发入门(06)--- 函数式编程

??面向对象编程和函数式编程是目前最主流的两种编程范式,而关于这两种范式孰优孰劣的讨论一直都没有停止过.事实上,真正理解两种编程范式的程序员不会武断的说这二者孰优孰劣,因为任何编程语言都没有什么灵丹妙药让其使用者成为优秀的程序员.其实,像Java这样很经典的面向对象的编程语言,也能够看到函数式编程的影子,如果你使用过访问者模式.命令模式,如果你使用过接口回调,你实际上已经使用了函数式编程的理念,而且在新版本的Java中,已经开始支持Lambda表达式和函数式接口,这些都是Java为了支持函数式编

论 Swift 开发入门 : 进度条(UIProgressView)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44802019 ------------------------------------------------------------------------------------------ 概述 ------------------------------------------------------------------------------------------ 代

论 Swift 开发入门 : 按钮(UIButton)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44403537 1.UIButton 概述 继承关系:UIButton -> UIControl -> UIView 控件样式: 2.UIButton 初始化 (1)使用 buttonWithType 构建按钮,已有的六种类型如下: enum UIButtonType : Int { case Custom // 自定义风格 case System // 圆角矩形 case Deta

论 Swift 开发入门 : 开关(UISwitch)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44407193 1.UIButton 概述 继承关系:UISwitch -> UIControl -> UIView 2.控件样式 3.使用示例 var myButton: UIButton? var mySwitch: UISwitch? override func viewDidLoad() { self.myButton = UIButton.buttonWithType(.S

Swift开发语法

Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者工具部门总监 Chris Lattner(克里斯·拉特纳) 开始着手 Swift 编程语言的设计工作 用一年时间,完成基本架构 Swift 大约历经 4 年的开发期,2014 年 6 月发表 克里斯·拉特纳 ) 特色 苹果宣称 Swift 的特点是:快速.现代.安全.互动,而且明显优于 Object