在我的 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)
}
希望对你有帮助
关于swift - 使用 datePicker 更改 cell.textField.text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619879/