Swift3.0 UIPickerView的使用

内含: 1、对UIPickerDelegate和UIPickerDataSource的使用说明;2、使用Bundle获取本地plist文件,解析Plist文件;3、使用SnapKit对视图自动布局

如图所示

import UIKit

class WYSynMainViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    // 自定义视图
    lazy var syntime_tabarView: WYCustomSynTime_Tabar = {
        let _tabarView = WYCustomSynTime_Tabar(frame: .zero)
        return _tabarView
    }()
    // pickerView
    lazy var syntime_pickerViwe: UIPickerView = {
        let pickerView = UIPickerView(frame: .zero)
        pickerView.delegate = self
        pickerView.dataSource = self
        return pickerView
    }()

    private var minuteArray: [String]?    // 分钟数组
    private var hourArray: [String]?       // 小时数组
    private var mainTitle: String?           // 标题
    private var currentHour: String?       // 被选中时,小时
    private var currentMinute: String?    //  被选中时,分钟

    override func viewDidLoad() {
        super.viewDidLoad()

        setDataSource()  // 设置数据
        setUpUI()           //  设置UI
        aciton()              // 设置自定义视图事件回调,采用的Block
    }

    //  设置数据
    private func setDataSource() {

        if let path = Bundle.main.path(forResource: "SynTimePlistFile", ofType: "plist") {
            if let _dic = NSDictionary(contentsOfFile: path) as? Dictionary<String, AnyObject> {

                mainTitle   = _dic["title"]     as? String
                hourArray   = _dic["hour"]      as? [String]
                minuteArray = _dic["minute"]    as? [String]
            }
        }
    }
    // 设置UI
    private func setUpUI() {

        view.backgroundColor = UIColor.white
        navigationItem.title = "时间设置"

        weak var weakSelf = self
        guard let _weakSelf = weakSelf else{return}
        view.addSubview(syntime_tabarView)
        syntime_tabarView.snp.makeConstraints { (make) in
            make.left.right.bottom.equalTo(_weakSelf.view)
            make.height.equalTo(49)
        }

        view.addSubview(syntime_pickerViwe)
        syntime_pickerViwe.snp.makeConstraints { (make) in
            make.left.right.equalTo(_weakSelf.view)
            make.centerY.equalTo(_weakSelf.view)
        }
    }
    // 设置自定义视图回调函数
    private func aciton() {

        syntime_tabarView.sytimeCustomTabarButtonActionHandle = {(button) in
            if button.tag == 1 { 

            }
            if button.tag == 2 { 

            }
        }
    }

    // MARK: UIPickerViewDelegate & UIPickerViewDataSource
    // 设置组的数量
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 3
    }

    // 根据组下标,设置组里item的数量
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

        switch component {
        case 0:
            return 1
        case 1:
            return 12
        case 2:
            return 60
        default:
            break
        }
        return 0
    }

    // 根据组下标,设置item文字
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        switch component {
        case 0:
            return mainTitle
        case 1:
            return hourArray?[row]
        case 2:
            return minuteArray?[row]
        default:
            break
        }
        return nil
    }

    // 根据组下标返回一个视图
    //    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    //
    //    }

    // 当前选择的下标
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        switch component {
        case 1:
            currentHour = hourArray?[row]
        case 2:
            currentMinute = minuteArray?[row]
        default:
            break
        }
    }

    // 根据组下标或则item下标,设置字体熟悉
    func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
        return nil
    }

    // 设置设置每组的宽度
    func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {

        switch component {
        case 0:
            return UIScreen.main.bounds.width / 4 * 2
        case 1:
            return UIScreen.main.bounds.width / 4
        case 2:
            return UIScreen.main.bounds.width / 4
        default:
            break
        }
        return 0.0
    }
}
时间: 2024-11-07 20:48:36

Swift3.0 UIPickerView的使用的相关文章

(细节控)swift3.0与融云IMKIT开发问题(一部分) override func onSelectedTableRow Method does not override any method from its superclass

原官网文档方案如下,在swift3.0的情况下出现 override func onSelectedTableRow  Method does not override any method from its superclass 这是因为swift3.0 有很多变更,需要更换下onSelectedTableRow参数. //重写RCConversationListViewController的onSelectedTableRow事件 override func onSelectedTableR

Swift2.3 --&gt; Swift3.0 的变化

Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcode帮我们把Swift2.3的代码转换为Swift3.0. 手动调出Xcode自动转换Swift2.3 到 Swift3.0 弹出语言版本选择界面,选择Covert to Swift3,Next:  进入选择模块界面: 选择模块界面 建议只选择自己创建的模块,第三方框架的模块最好不要使用Xco

使用 swift3.0高仿新浪微博

项目地址:https://github.com/SummerHH/swift3.0WeBo 使用 swift3.0 高仿微博,目前以实现的功能有,添加访客视图,用户信息授权,首页数据展示(支持正文中连接匹配,@匹配)支持照片浏览,大图浏览,保存图片到相册本地, 实现发布微博,发微博添加照片,发送Emoticon表情等功能, 先看下项目整体框架 项目使用 MVC 框架,但是在写的过程中也用到了 MVVM设计模式

使用的一些支持swift3.0的开源库

#解决键盘弹起遮挡工具 pod 'IQKeyboardManagerSwift', '~>4.0.6' #多种类型弹出框 pod 'SCLAlertView', :git => 'https://github.com/vikmeup/SCLAlertView-Swift' # Alamofire 网络库 (4.1.0最低支持iOS8.0,4.0最低支持iOS9.0) pod 'Alamofire', '~> 4.0' # swift解析json库 pod 'SwiftyJSON', :g

Swift3.0 函数闭包与OC Block

刚接触Swift,如有不对的点,欢迎指正.转载请说明出处 Swift中定义一个基本函数 //定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> String { return ("输出了\(name)") } //通用形式 func name(parameters) -> return type { function body } Swift 中基本的闭包函数与OC中Block的相似点 带参闭包 //OC中Bloc

swift3.0:CoreData的使用

一.介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛. CoreData可降低开发成本,提高代码质量.它是一个完全面向对象的API,能够合理管理内存,负责在数据库中存储数据,底层也是由类似 于SQL的技术实现的.CoreData是持久化存储的最佳方式,数据最终的存储类型可以是SQLite数据库.XML.二进制.内存或自定义数据类型 它和SQLite的区别是:只能取出整个实体记录,然后分离,之后才能得

swift3.0 coredata 的使用

//swift3.0在语法上有很大的改变,以简单的增删改查为例,如下: //User类如下: import Foundation import CoreData extension User { @nonobjc public class func fetchRequest() -> NSFetchRequest<User> { return NSFetchRequest<User>(entityName: "User"); } @NSManaged pu

iOS 日期处理 (Swift3.0 NSDate)

处理日期的常见情景 NSDate -> String & String -> NSDate 日期比较 日期计算(基于参考日期 +/- 一定时间) 计算日期间的差异 拆解NSDate对象(分解成year/month/day/hour/minute/second 等) NSDate相关类 NSDate DateFormatter DateComponents DateComponentFormatter Calendar Date structure: Swift3.0中引入了Date s

swift3.0变化总结

Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不仅仅是我下面的这个列表,但是列表中的每一项都是对你的一个巨大的打击. 虽然Swift 3.0 仍处于开发阶段.Swift 3.0 会有很多很多的变化,其中一些可能会在细微之处.然而,我们希望这些变化是一次性的.为了使Swift可以在未来几年更好的发展,在以后的版本更新中改变应该的显著变小.一些Swi