使用日历视图的UIDate Picker

时间:2016-04-15 02:59:57

标签: ios swift datepicker uipickerview

我正在尝试让DatePicker显示在我的应用中。

当弹出DatePicker时,我想弹出一个日历而不是"老虎机"视图。为了完成它,我希望用户能够选择一个日期范围。因此,它正是您在旅行应用中找到的内容,例如TravelocityExpedia

这是我创建的代码,我已经成功地以编程方式实现了UIPickerViews,它完美地运行。只是因为这个DatePicker我被卡住了!我是从UITextField拉出来的吗?一个按钮? SOS!

只是寻找一些关于在哪里寻找或做什么的建议,或者如果您可能知道代码,我很乐意接受教育!

我感谢每个人的帮助。

-

import UIKit


class WanderlustViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {


let climateOption = ["Hot", "Warm", "Cold", "Anywhere"]
let environmentOption = ["Beach","City","Mountain","Rural","Anywhere"]
let regionOption = ["Central America","Carribean","Europe","North America","South America", "Anywhere"]
let budgetOption = ["$0-$500","$501-$1000","$1001-$1500","$1501-$2500","$2501 and up"]

@IBOutlet weak var climateTextField: UITextField!
@IBOutlet weak var environmentTextField: UITextField!
@IBOutlet weak var regionTextField: UITextField!
@IBOutlet weak var budgetTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

        let climatepickerView = UIPickerView()
            climatepickerView.tag = 1
            climatepickerView.delegate = self
            climatepickerView.dataSource = self
        let environmentpickerView = UIPickerView()
            environmentpickerView.tag = 2
            environmentpickerView.delegate = self
            environmentpickerView.dataSource = self
        let regionpickerView = UIPickerView()
            regionpickerView.tag = 3
            regionpickerView.delegate = self
            regionpickerView.dataSource = self
        let budgetpickerView = UIPickerView()
            budgetpickerView.tag = 4
            budgetpickerView.delegate = self
            budgetpickerView.dataSource = self

                    climateTextField.inputView = climatepickerView
                    environmentTextField.inputView = environmentpickerView
                    regionTextField.inputView = regionpickerView
                    budgetTextField.inputView = budgetpickerView

        let toolBar = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0))
            toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)
            UIToolbar.appearance().barTintColor = UIColor.grayColor() /* Change background color using  Xcode default vales */
            UIToolbar.appearance().barTintColor = UIColor(red: 38/255, green: 50/255, blue: 56/255, alpha:  0.05)
            UIBarButtonItem.appearance().tintColor = UIColor.grayColor() /* Change tint color using Xcode default vales */
            UIBarButtonItem.appearance().tintColor = UIColor(red: 24/255, green: 255/255, blue: 255/255, alpha: 1.0)

        let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: #selector(WanderlustViewController.donePressed(_:)))

        let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil)

        let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 3, height: self.view.frame.size.height))

        let textBtn = UIBarButtonItem(customView: label)
            toolBar.setItems([flexSpace,textBtn,flexSpace,doneButton], animated: true)

                    climateTextField.inputAccessoryView = toolBar
                    environmentTextField.inputAccessoryView = toolBar
                    regionTextField.inputAccessoryView = toolBar
                    budgetTextField.inputAccessoryView = toolBar

}

        func donePressed(sender: UIBarButtonItem) {

                    climateTextField.resignFirstResponder()
                    environmentTextField.resignFirstResponder()
                    regionTextField.resignFirstResponder()
                    budgetTextField.resignFirstResponder()
}

        func tappedToolBarBtn(sender: UIBarButtonItem) {

                    climateTextField.resignFirstResponder()
                    environmentTextField.resignFirstResponder()
                    regionTextField.resignFirstResponder()
                    budgetTextField.resignFirstResponder()
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    self.view.endEditing(true)
}

        func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
                return 1
}

        func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
                if pickerView.tag == 1 {
                        return climateOption.count
                }
                if pickerView.tag == 2 {
                        return environmentOption.count
                }
                if pickerView.tag == 3 {
                        return regionOption.count
                }
                if pickerView.tag == 4 {
                        return budgetOption.count
                }
                return 1
}

        func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
                if pickerView.tag == 1 {
                        return climateOption[row]
                }
                if pickerView.tag == 2 {
                        return environmentOption[row]
                }
                if pickerView.tag == 3 {
                        return regionOption[row]
                }
                if pickerView.tag == 4 {
                        return budgetOption[row]
                }
                return ""
}

        func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
                if pickerView.tag == 1 {
                        climateTextField.text = climateOption[row]
                }
                if pickerView.tag == 2 {
                        environmentTextField.text = environmentOption[row]
                }
                if pickerView.tag == 3 {
                        regionTextField.text = regionOption[row]
                }
                if pickerView.tag == 4 {
                        budgetTextField.text = budgetOption[row]
                }



}

0 个答案:

没有答案