使用 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)
}

希望对你有所帮助。