从UIDataPicker日期调用转换后的字符串

时间:2017-06-03 22:12:56

标签: ios swift uidatepicker

现在我正在学习Swift并制作一个典型的ToDo应用程序。 我找到了一个函数将日期数据从UIDatePicker转换为String,这是我的ViewController代码块:

@IBAction func dateToString(sender: UIDatePicker) {
            var dateFormatter = NSDateFormatter()
            dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
            var strDate = dateFormatter.stringFromDate(myDatePicker.date)
            return ()
        }

但问题是我无法在我的应用中访问此函数的字符串结果 我在每个tableViewCell中有2个标签,一个简单的标签文本数据,另一个是日期选择器的日期数据(也应该是一个字符串):

@IBOutlet weak var saveButton: UIBarButtonItem!

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if saveButton === sender {
        let name = nameTextField.text ?? ""
        let date =
        item = Item (name: name, date: date)
    }
}
override func viewDidLoad() {
    super.viewDidLoad()
    if let item = item {
        nameTextField.text = item.name
                           = item.date

}

}

请帮助,我应该写什么

let date = 

= item.date

定义日期? 我试过调用函数let date = dateToString;但它对我不起作用。 非常感谢这里的任何帮助!

3 个答案:

答案 0 :(得分:0)

你可以改变你的功能,如

var strDate:String = String()

@IBAction func dateToString(sender: UIDatePicker) {
        var dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
        strDate = dateFormatter.stringFromDate(myDatePicker.date)
    }

然后你可以使用

let date = strDate

答案 1 :(得分:0)

首先,你的dateToString函数不应该是IBAction。它们用于由接口项直接调用并在Interface Builder中连接的方法。你想要的是一个常规函数,它接受一个日期并返回一个格式化的字符串,如下所示:

func dateToString(date: NSDate) -> String {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
    return dateFormatter.string(from: date)
}

现在,当您想要一个格式化的日期字符串时,您可以调用它并将其传递给您想要格式化的Date。看起来您使用UIDatePicker来指定日期,因此您需要在视图控制器中设置@IBOutlet(如果您还没有这样做),以便您可以访问宾语。为此,控制 - 从日期选择器拖动到视图控制器源,然后命名插座。它将在您的源代码中生成代码:

@IBOutlet weak var myDatePicker: UIDatePicker!

现在您可以在班级的其他地方引用datePicker。因此,您可以将日期作为格式化字符串获取,如下所示:

let dateString = dateToString(date: myDatePicker.date)

然后,您可以将此字符串传递给Item,或将其设置为字段或标签的文本。

答案 2 :(得分:0)

这就是我弄清楚的:

func dateToString (date: NSDate) -> String {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
        return dateFormatter.stringFromDate(date)
    }



    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if saveButton === sender {
            let name = nameTextField.text ?? ""
            let date = dateToString (myDatePicker.date) ?? ""
            item = Item (name: name, date: date)
        }