我尝试通过展开segue从ViewController传递Date给另一个Date。问题是传递的数据被日期()的结果取代。Swift:通过展开segue传递的数据在被读取之前被擦除
这里就是日期选择的VC代码:
class DateSelectorViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
...
@IBAction func validateDate(_ sender: CustomButton) {
sendDateToNextVC(sender: sender)
}
func sendDateToNextVC(sender: UIButton) {
let destinationVC = AddActivityViewController()
destinationVC.dateSelected = dateSelected
destinationVC.recurrenceType = selectedFrequency
destinationVC.isRecurrent = recurrent
performSegue(withIdentifier: "sendSelectedDate", sender: sender)
}
}
这里是VC的接收日期在dateSelected代码:
class AddActivityViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
...
var dateSelected: Date = Date()
...
@IBAction func unwindToAddActiVC(_ sender: UIStoryboardSegue) {
if sender.identifier == "sendSelectedDate" {
setDateLabel()
}
}
func setDateLabel() {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "fr_FR")
dateFormatter.dateFormat = "dd MMMM yyyy"
dateLabel.text = dateFormatter.string(from: dateSelected)
}
}
我说该行
var dateSelected: Date = Date()
被称为多重t imes,尤其是在日期从第一个VC传递到目标VC之后的一次。我尝试使用可选,但它只会导致明显的错误“发现零,而解包”。
如果您需要其他代码,请让我知道。
在此先感谢!
虽然我得到了使用标题添加结构到文本,在您的答案中有所有应有的尊重有更多的标题比文本。请尝试减少标题的使用。想象一下,如果所有的答案都是这样的。这将是很难阅读。不过,谢谢你的回答,这是正确的。 – FreeNickname
非常感谢您的帮助! – Jonathan