我有一系列 if 函式來檢查兩個文本欄位是否為空(或只是其中一個),如果是,則在標簽中顯示錯誤訊息。如果兩個文本欄位都不是空的,那么它應該執行計算,然后轉到下面的視圖控制器并在標簽中顯示方程的值。然而,即使有 if 函式檢查文本欄位是否為 nil,segue 仍然會被執行,即使它們是 nil,錯誤標簽也是如此。為什么 if 函式不能阻止這種情況?
@IBAction func CalcFlowRateEnd(_ sender: UIButton) {
let volume = Double(VolTextField.text!)
let time = Double(SecTextField.text!)
let units = volumeUnitsPicker4.selectedRow(inComponent: 0)
var selectedUnit = data[units]
//milliliters error labels
if selectedUnit == "milliliters" && volume == nil && time == nil {
volErrorLabel.text = "Enter Volume"
secErrorLabel.text = "Enter Seconds"}
if selectedUnit == "milliliters" && volume != nil && time == nil {
secErrorLabel.text = "Enter Seconds"}
if selectedUnit == "milliliters" && volume == nil && time != nil {
volErrorLabel.text = "Enter Volume"}
//milliliters calc
if selectedUnit == "milliliters" && volume != nil && time != nil{
let volumeConvert = Double(volume!/1000)
let timeConvert = Double(time! / 60)
let flowRateMetric = Double(volumeConvert / timeConvert)
let volumeImperial = Double(volume!/4546)
let flowRateImperial = Double(volumeImperial / timeConvert)
let roundedMetric = round(flowRateMetric * 100) / 100.0
let roundedImperial = round(flowRateImperial * 100) / 100.0
calcFlowRate.text = "\(roundedMetric) liters per min or \(roundedImperial) gal per min"
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let flowRate = calcFlowRate.text ?? ""
let destinationVC = segue.destination as! FlowRateCalcEndViewController
destinationVC.flowRate = flowRate
}
uj5u.com熱心網友回復:
該prepare(for segue)函式不應嵌套在您的@IBAction函式中。
func prepare(for segue)應該被覆寫。在執行 segue 之前呼叫它,因此您有機會“做某事”
var isFlowRateCalculated = false
@IBAction func CalcFlowRateEnd(_ sender: UIButton) {
if selectedUnit == "milliliters" && volume != nil && time != nil {
// logic
isFlowRateCalculated = true
}
}
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
return isFlowRateCalculated
}
override func prepare(for segue) {
// hand off data for view being presented
}
這并不能解決您的全部問題,但這是朝著正確方向邁出的一步。很高興繼續和你談論這個:)
我還建議在Medium上查看這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/419175.html
標籤:
下一篇:通過更改API資料更改圖示
