使用 datePicker 更改 cell.textField.text
Change cell.textField.text with a datePicker
在我的 tableViewCell 中,我有一个调用 UIDatePicker 的 UITextField(下面的代码)。
我的问题是:我不明白如何在 cell.myTextField 中传递日期(来自 datePicker)(因为它只出现在 cellForRowAtIndexPath
方法中)。有人可以帮助我吗?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//.........
cell.myTextField.addTarget(self, action: "showDatePicker:", forControlEvents: UIControlEvents.EditingDidBegin)
//.........
}
func showDatePicker(sender: UITextField) {
var datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}
func datePickerValueChanged(sender:UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle
dateFormatter.timeStyle = NSDateFormatterStyle.FullStyle
//dateTextField.text = dateFormatter.stringFromDate(sender.date)
//How to load my cell.myTextField.text with the sender.date ?
}
有几种方法可以根据需要进行操作,您可以结合使用 cellForRowAtIndexPath
(这与您在 UITableViewDataSource
中声明的不同)。
要使用上述方法,您需要知道 indexPath
或至少行的索引,为此您可以使用 indexPathForSelectedRow
准确获取所选行,然后设置您想要的值如下所示:
func datePickerValueChanged(sender:UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle
dateFormatter.timeStyle = NSDateFormatterStyle.FullStyle
var indexPath = self.tableView.indexPathForSelectedRow()
var cell = self.tableView.cellForRowAtIndexPath(indexPath)
cell.dateTextField.text = dateFormatter.stringFromDate(sender.date)
}
希望对你有所帮助。
在我的 tableViewCell 中,我有一个调用 UIDatePicker 的 UITextField(下面的代码)。
我的问题是:我不明白如何在 cell.myTextField 中传递日期(来自 datePicker)(因为它只出现在 cellForRowAtIndexPath
方法中)。有人可以帮助我吗?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//.........
cell.myTextField.addTarget(self, action: "showDatePicker:", forControlEvents: UIControlEvents.EditingDidBegin)
//.........
}
func showDatePicker(sender: UITextField) {
var datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}
func datePickerValueChanged(sender:UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle
dateFormatter.timeStyle = NSDateFormatterStyle.FullStyle
//dateTextField.text = dateFormatter.stringFromDate(sender.date)
//How to load my cell.myTextField.text with the sender.date ?
}
有几种方法可以根据需要进行操作,您可以结合使用 cellForRowAtIndexPath
(这与您在 UITableViewDataSource
中声明的不同)。
要使用上述方法,您需要知道 indexPath
或至少行的索引,为此您可以使用 indexPathForSelectedRow
准确获取所选行,然后设置您想要的值如下所示:
func datePickerValueChanged(sender:UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle
dateFormatter.timeStyle = NSDateFormatterStyle.FullStyle
var indexPath = self.tableView.indexPathForSelectedRow()
var cell = self.tableView.cellForRowAtIndexPath(indexPath)
cell.dateTextField.text = dateFormatter.stringFromDate(sender.date)
}
希望对你有所帮助。