【发布时间】:2017-12-08 14:29:58
【问题描述】:
我在 1 个视图控制器中有 5 个 UITextField。前 4 个显示一个弹出 UIPickerView,其中填充了来自相应数组的数据。当我旋转选择器时,该部分将显示在文本字段中。
第 5 个 UITextField 显示一个弹出式 UIDatepicker,但日期和时间从不显示在文本字段中。
我看了无数的教程,在这个论坛上搜索了几天,仍然无法正常工作。
我做错了什么?任何帮助将不胜感激。
这是我的代码:
import UIKit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
var pickerView1 = UIPickerView()
var pickerView2 = UIPickerView()
var pickerView3 = UIPickerView()
var pickerView4 = UIPickerView()
var pickerView5 = UIDatePicker()
@IBOutlet var mountainTextField: UITextField!
@IBOutlet var difficultyTextField: UITextField!
@IBOutlet var runTextField: UITextField!
@IBOutlet var whenTextField: UITextField!
@IBOutlet var snowTextField: UITextField!
@IBAction func whenTextField(_ sender: UITextField) {
let datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.dateAndTime
sender.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(ViewController.datePickerValueChanged), for: UIControlEvents.valueChanged)
}
var mountain = ["A", "B"]
var difficulty = ["1", "2", "3", "4"]
var run = ["5", "6", "7", "8"]
var snow = ["C", "D", "E", "F"]
override func viewDidLoad() {
super.viewDidLoad()
pickerView1 = UIPickerView()
pickerView2 = UIPickerView()
pickerView3 = UIPickerView()
pickerView4 = UIPickerView()
pickerView5 = UIDatePicker()
pickerView1.delegate = self
pickerView2.delegate = self
pickerView3.delegate = self
pickerView4.delegate = self
pickerView1.tag = 0
pickerView2.tag = 1
pickerView3.tag = 2
pickerView4.tag = 3
pickerView5.tag = 4
self.mountainTextField.inputView = self.pickerView1;
self.difficultyTextField.inputView = self.pickerView2;
self.runTextField.inputView = self.pickerView3;
self.snowTextField.inputView = self.pickerView4;
self.whenTextField.inputView = self.pickerView5;
}
func datePickerValueChanged(sender:UIDatePicker) {
let dateFormatter = DateFormatter()
whenTextField.text = dateFormatter.string(from: sender.date)
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 0 {
return mountain.count
} else if pickerView.tag == 1 {
return difficulty.count
} else if pickerView.tag == 2 {
return run.count
} else if pickerView.tag == 3 {
return snow.count
}
return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 0 {
return mountain[row]
} else if pickerView.tag == 1 {
return difficulty[row]
} else if pickerView.tag == 2 {
return run[row]
} else if pickerView.tag == 3 {
return snow[row]
}
return ""
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 0 {
mountainTextField.text = mountain[row]
} else if pickerView.tag == 1 {
difficultyTextField.text = difficulty[row]
} else if pickerView.tag == 2 {
runTextField.text = run[row]
} else if pickerView.tag == 3 {
snowTextField.text = snow[row]
}
}
}
【问题讨论】:
-
whenTextField什么时候打电话?
标签: ios swift swift3 uitextfield uidatepicker