我嘗試通過展開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