在我的代码中,我已将Datepicker用作Textfield的Inputview
<div
class="ess-product-desc" ng-hide="currentView == 'detail' `&& deviceType=='mobile'"
ui-sref="detail({itemId: 'BWK6400', uom: 'CT', cm_sp:'', merchPreference:''})"
href="#/itemDetail?`itemId=BWK6400&uom=CT" aria-hidden="false">
<span>Center-Pull Hand Towels, 2-Ply, Perforated, 7 7/8 x 10, White, 600/RL, 6 RL/CT</span>
</div>
文本字段委托无法使用,因为文本字段不可编辑。
每当用户单击“文本字段”时,我需要将文本字段中的文本(日期)更新为UIPicker输入视图
[]
答案 0 :(得分:3)
在Swift 5中,Xcode 12使用以下代码:
if #available(iOS 14, *) {
datePicker.preferredDatePickerStyle = .wheels
}
它将选择器设置为与iOS 13中相同。
答案 1 :(得分:2)
result
答案 2 :(得分:0)
首先,您需要将字符串转换为日期。
假设文本字段包含“ 20/2/2019”
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"dd/M/yyyy";
NSDate *dt = [formatter dateFromString:self.textField.text];
您还需要实现UITextFieldDelegate
方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
if (self.tFPeriodEndCurrent == textField) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"dd/M/yyyy";
NSDate *dt = [formatter dateFromString:textField.text];
if (textField.inputView isKindOfClass:[UIDatePicker class]) {
UIDatePicker *dtPicker = (UIDatePicker *)textField.inputView;
[dtPicker setDate:dt];
}
}
return TRUE;
}
别忘了设置文本字段委托。
快速版本
var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yyyy"
return formatter
}()
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
guard let txtDate = textField.text else { return true }
if textField == tFPeriodEndCurrent, let dt = dateFormatter.date(from: txtDate) {
if let datePicker = textField.inputView as? UIDatePicker {
datePicker.setDate(dt, animated: true)
}
}
return true
}
答案 3 :(得分:0)
如果您要带来相同的UIPickerView外观,请尝试一下
class ViewController: UIViewController {
@IBOutlet weak var dateField: UITextField!
var datePicker :UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
datePicker = UIDatePicker.init(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 200))
datePicker.addTarget(self, action: #selector(self.dateChanged), for: .allEvents)
dateField.inputView = datePicker
let doneButton = UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(self.datePickerDone))
let toolBar = UIToolbar.init(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 44))
toolBar.setItems([UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil), doneButton], animated: true)
dateField.inputAccessoryView = toolBar
}
@objc func datePickerDone() {
dateField.resignFirstResponder()
}
@objc func dateChanged() {
dateField.text = "\(datePicker.date)"
}
}