天天看點

PickerView封裝

前面我已經對系統PickerView做了簡單介紹,pickerView用法很簡單,但如果想封裝好一個PickerView類就不太容易了,本文是我最近一段時間寫完項目後封裝的一個PickerView類,支援自定義文字選擇、日期選擇、地區選擇,簡單易用,下面我值介紹一下用法:

// ViewController.swift

// JHPickerView

//

// Created by hanchen on 16/8/16.

// Copyright © 2016年 LiJianhui. All rights reserved.

//

import UIKit

class ViewController: UIViewController {

private let onePicker: JHPickerView = {
    var dataSource = [String]()
    for i in 0..<20 {
        dataSource.append("\(i)")
    }
    return JHPickerView(aDataSource: dataSource, aTitle: "AlonePicker")
}()
private let datePicker: JHPickerView = {
    return JHPickerView(aDatePickerMode: .Date, aTitle: "開始日期")
}()
private let areaPicker: JHPickerView = {
    return JHPickerView(anAreaType: .ProvinceCityDistrict, aTitle: "地區選擇")
}()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}


@IBAction func onePickerBtnAction(sender: UIButton) {
    onePicker.show()
    onePicker.showSelectedRow(3, animated: true)
    onePicker.didClickDoneForTypeAloneHandler { (selectedRow, result) in
        print("selectedRow:\(selectedRow)")
        print("result:\(result)")
        sender.setTitle(result, forState: .Normal)
    }
    onePicker.didClickCancelHandler {
        print("dismiss")
    }

}
@IBAction func datePickerBtnAction(sender: UIButton) {
    datePicker.show()
    datePicker.setDate(NSDate(), animated: true)
    datePicker.didClickDoneForTypeDateWithFormat("yyy-MM-dd") { (selectedDate, dateString) in
        print("selectedDate:\(selectedDate)")
        print("dateString:\(dateString)")
        sender.setTitle(dateString, forState: .Normal)
    }
    datePicker.didClickCancelHandler {
        print("dismiss")
    }
}
@IBAction func areaPickerBtnAction(sender: UIButton) {
    areaPicker.show()
    areaPicker.didClickDoneForTypeAreaHandler { (province, city, district) in
        print("province:\(province)")
        print("city:\(city)")
        print("district:\(district)")
        sender.setTitle(province! + city! + district!, forState: .Normal)
    }
    areaPicker.didClickCancelHandler {
        print("dismiss")
    }
}
           

}

代碼連結下載下傳代碼

繼續閱讀