在SWIFT中使用UIDatePicker(在UIActionSheet中)输入日期时,在UITextField中设置日



我想创建一个UITextField,当触摸时将以ActionSheet方式激活UIDatePicker。虽然有一些资源在那里,它没有显示如何以这种方式格式化日期。下面的代码是我从stackoverflow中找到的最好的代码,但是没有给出日期的格式:

import UIKit
class SignUpViewController: UIViewController, UITextFieldDelegate {
var datePicker:UIDatePicker!
@IBOutlet weak var dateTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    // UI DATE PICKER SETUP
    var customView:UIView = UIView(frame: CGRectMake(0, 100, 320, 160))
    customView.backgroundColor = UIColor.clearColor()
    datePicker = UIDatePicker(frame: CGRectMake(0, 0, 320, 160))
    datePicker.datePickerMode = UIDatePickerMode.Date

    customView.addSubview(datePicker)
    dateTextField.inputView = customView
    var doneButton:UIButton = UIButton (frame: CGRectMake(100, 100, 100, 44))
    doneButton.setTitle("Done", forState: UIControlState.Normal)
    doneButton.addTarget(self, action: "datePickerSelected", forControlEvents: UIControlEvents.TouchUpInside)
    doneButton.backgroundColor = UIColor .grayColor()
    dateTextField.inputAccessoryView = doneButton

}

func datePickerSelected() {
    dateTextField.text = datePicker.date.description
}

什么不工作?日期不是你想要的格式?看看NSDateFormatter

:

  • 不需要为选择器创建包装器视图:只需直接分配给inputView
  • 不要使用UITextField:毕竟它不是文本字段!这不仅很危险,因为您不能轻易地通过外部键盘禁用输入,而且语义也不利于可访问性。相反,创建一个自定义UIControl子类并使用标签显示文本。你可以在这里分配输入视图。

最新更新