iOS Swift 3 - UIDatePicker

Ant*_*ine 19 uidatepicker ios swift swift3

我有一个UIDatePicker显示日,月和年.但我不知道如何获得这些参数.

那么UIDatePicker使用Swift 3 获得日,月和年的最佳方法是什么?

Ena*_*que 52

Swift 3和Swift 4示例中的UIDatePicker.

在Swift 3中你可以使用

  1. 在swift 3中创建单视图应用程序的简单项目
  2. 拖动文本字段并连接到viewController
  3. 日期选择器看起来像图像

在此输入图像描述

  1. ViewController代码如下..

      class ViewController: UIViewController {
         //Text Field Connection
       @IBOutlet weak var txtDatePicker: UITextField!
       //Uidate picker
       let datePicker = UIDatePicker()
    
        override func viewDidLoad() {
        super.viewDidLoad()
       //show date picker
         showDatePicker()
      }
    
    
       func showDatePicker(){
       //Formate Date
        datePicker.datePickerMode = .date
    
        //ToolBar
       let toolbar = UIToolbar();
       toolbar.sizeToFit()
    
       //done button & cancel button
        let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.bordered, target: self, action: "donedatePicker")
        let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
       let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.bordered, target: self, action: "cancelDatePicker")
       toolbar.setItems([doneButton,spaceButton,cancelButton], animated: false)
    
    // add toolbar to textField
    txtDatePicker.inputAccessoryView = toolbar
     // add datepicker to textField
    txtDatePicker.inputView = datePicker
    
       }
    
     func donedatePicker(){
      //For date formate
       let formatter = DateFormatter()
       formatter.dateFormat = "dd/MM/yyyy"
       txtDatePicker.text = formatter.string(from: datePicker.date)
       //dismiss date picker dialog
       self.view.endEditing(true)
        }
    
          func cancelDatePicker(){
           //cancel button dismiss datepicker dialog
            self.view.endEditing(true)
          }
       }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 完整源项目提供给github.github链接:https://github.com/enamul95/DatePicker1

    在Swift 4中,您可以使用以下代码

     class ViewController: UIViewController {
    
       @IBOutlet weak var txtDatePicker: UITextField!
      let datePicker = UIDatePicker()
    
      override func viewDidLoad() {
        super.viewDidLoad()
         showDatePicker()
      }
    
    
      func showDatePicker(){
        //Formate Date
        datePicker.datePickerMode = .date
    
       //ToolBar
       let toolbar = UIToolbar();
       toolbar.sizeToFit()
       let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(donedatePicker));
       let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
      let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelDatePicker));
    
     toolbar.setItems([doneButton,spaceButton,cancelButton], animated: false)
    
      txtDatePicker.inputAccessoryView = toolbar
      txtDatePicker.inputView = datePicker
    
     }
    
      @objc func donedatePicker(){
    
       let formatter = DateFormatter()
       formatter.dateFormat = "dd/MM/yyyy"
       txtDatePicker.text = formatter.string(from: datePicker.date)
       self.view.endEditing(true)
     }
    
     @objc func cancelDatePicker(){
        self.view.endEditing(true)
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)


Nir*_*v D 43

在Swift 3中,您可以DateComponents像这样使用它.

首先datepicker.valueChanged事件添加操作.

datepicker.addTarget(self, action: #selector(dateChanged(_:)), for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)

然后DateComponents在操作中使用选定的日,月和年.

func dateChanged(_ sender: UIDatePicker) {
    let components = Calendar.current.dateComponents([.year, .month, .day], from: sender.date)
    if let day = components.day, let month = components.month, let year = components.year {
        print("\(day) \(month) \(year)")
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 14

假设您要在点击文本字段上显示datePicker,并且当用户从中选择某个日期时,它将自动填充在您的文本字段中.

 @IBOutlet weak var dateTextField: UITextField!
let datePickerView:UIDatePicker = UIDatePicker()
        datePickerView.datePickerMode = UIDatePickerMode.date
        dateTextField.inputView = datePickerView
        datePickerView.addTarget(self, action: #selector(ViewController.datePickerValueChanged), for: UIControlEvents.valueChanged)

// Make a dateFormatter in which format you would like to display the selected date in the textfield.
func datePickerValueChanged(sender:UIDatePicker) {

        let dateFormatter = DateFormatter()

        dateFormatter.dateStyle = DateFormatter.Style.medium

        dateFormatter.timeStyle = DateFormatter.Style.none

        dateTextField.text = dateFormatter.string(from: sender.date)

    }
Run Code Online (Sandbox Code Playgroud)

这里是作为UIDatePicker实例的Sender.date从datepicker中获取日期并填充在您的文本字段中.


vai*_*hav 5

创建IBOutletUIDatePicker,并将其连接正确,然后使用下面的代码来获得天,月,年等。

var comp = NSDateComponents()
@IBOutlet weak var datePicker: UIDatePicker!

override func viewDidLoad() {
    super.viewDidLoad()
    datePicker.addTarget(self, action: Selector("datePickerChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}

func datePickerChanged(datePicker:UIDatePicker){
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle
    dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
    let cal = NSCalendar.currentCalendar()
    comp = cal.components([.Era, .Day, .Month, .Year, .Hour, .Minute] , fromDate: datePicker.date)

    // getting day, month, year ect
    print ("Era:\(comp.era) Date:\(comp.day) Month:\(comp.month) Month:\(comp.year) Hours: \(comp.hour) Minuts:\(comp.minute)")
}
Run Code Online (Sandbox Code Playgroud)


小智 5

Swift 5 用户可以尝试这个,它对我有用

import UIKit

class FreeCallsViewController: UIViewController {

@IBOutlet weak var dateTextField: UITextField!

let datepicker = UIDatePicker()

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

@IBAction func calenderButtonPressed(_ sender: UIButton) {
    self.createDatePicker()
}

func createDatePicker() {
    let toolbar = UIToolbar()
    toolbar.sizeToFit()
    
    let donebtn = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donepressed))
    
    toolbar.setItems([donebtn], animated: true)
    
    dateTextField.inputAccessoryView = toolbar
    
    dateTextField.inputView = datepicker
    
    datepicker.datePickerMode = .date
}
@objc func donepressed() {
    let dateformator = DateFormatter()
    
    dateformator.dateStyle = .medium
    dateformator.timeStyle = .none
    
    
    
    dateTextField.text = dateformator.string(from: datepicker.date)
    self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)

}